DROP TABLE — 테이블 제거하기
DROP TABLE — 테이블 제거하기
더 이상 필요 없는 테이블을 데이터베이스에서 완전히 지우는 명령이 DROP TABLE이에요. 테이블과 함께 그에 딸린 인덱스, 규칙, 트리거, 제약 조건까지 한꺼번에 지워지기 때문에, 의존하는 객체가 있다면 CASCADE를 써야 하는 경우도 있어요. 데이터는 남기고 행만 비우고 싶다면 이 명령 대신 DELETE나 TRUNCATE를 쓰는 게 맞아요.
출처: PostgreSQL 문서
본문
Synopsis (문법)
DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
Description (설명)
DROP TABLE은 데이터베이스에서 테이블을 제거해요. 테이블 소유자, 스키마 소유자, 슈퍼유저만 테이블을 삭제할 수 있어요. 테이블을 파괴하지 않고 행만 비우려면 DELETE나 TRUNCATE를 사용해요.
DROP TABLE은 대상 테이블에 존재하는 모든 인덱스, 규칙, 트리거, 제약 조건을 항상 함께 제거해요. 다만 뷰로 참조되거나 다른 테이블의 외래 키 제약 조건에 의해 참조되는 테이블을 삭제하려면 CASCADE를 지정해야 해요. (CASCADE는 의존하는 뷰를 완전히 제거하지만, 외래 키의 경우에는 외래 키 제약 조건만 제거하고 다른 테이블 전체를 제거하진 않아요.)
Parameters (매개변수)
IF EXISTS— 테이블이 존재하지 않아도 오류를 내지 않아요. 이 경우에는 notice가 발행돼요.name— 삭제할 테이블의 이름(선택적으로 스키마 한정)이에요.CASCADE— 테이블에 의존하는 객체(예: 뷰)와, 다시 그 객체들에 의존하는 모든 객체를 자동으로 삭제해요 (Section 5.15 참고).RESTRICT— 테이블에 의존하는 객체가 있으면 삭제를 거부해요. 이것이 기본값이에요.
Examples (예제)
films와 distributors 두 테이블을 삭제해요:
DROP TABLE films, distributors;
Compatibility (호환성)
이 명령은 SQL 표준을 따르는데, 다만 표준은 명령 하나당 테이블 하나만 삭제할 수 있고, IF EXISTS 옵션은 PostgreSQL 확장이라는 점이 달라요.
더 알아보기 (Learn more)
- 테이블을 만들 때 쓰는
CREATE TABLE명령 - 테이블 구조를 바꾸는
ALTER TABLE명령 - 테이블의 행을 비우는
TRUNCATE명령