5.4 Drop Table
테이블 삭제 구문
Database를 운영하다보면 테이블을 나누기도, 합치기도 하며 테이블의 schema가 변경된다. 이떄 더 이상 사용하지 않는 테이블이 생겨, 테이블의 삭제가 필요하다. DROP TABLE은 더 이상 사용하지 않는 테이블을 삭제하는 DDL 구문이다.
DROP TABLE
의 사용방법은 다음과 같다:
1
DROP TABLE tb_name;
테이블 삭제의 활용
아래의 Employee, Job, EmployeeJob 테이블을 예로들어 테이블 삭제를 해보자. 각 테이블은 다음의 정보를 저장한다.
- Employee: 직원의 정보
- Job: 직책 정보
- EmployeeJob: 직원과 직책의 연결정보
테이블에 저장하려는 정보의 성격에따라 EmployeeJob은 Employee와 Job에 대한 FK를 가지고 의존성을 갖는다.
Table 0: Employee Table
employee_id | name | created_at | ||
---|---|---|---|---|
Table 1: Job Table
job_id | name | created_at |
---|---|---|
Table 2: EmployeeJob Table
employee_id | job_id | hired_at |
---|---|---|
EmployeeJob 테이블의 삭제
EmployeeJob 테이블은 DROP TABLE
구문을 이용하여 어려움없이 삭제가 가능하다:
1
DROP TABLE employee_job;
Job 테이블의 삭제
만약 EmployeeJob 테이블이 있는 상태로 Job 테이블을 삭제하려 한다면 아래와 같은 오류를 맞이할 것이다:
1
2
3
DROP TABLE job;
-- Error: Cannot drop table job because other objects depend on it
오류가 발생하는 이유는 Job 테이블이 삭제된다면 Database의 정합성이 깨지기 때문이다. 따라서 Job 테이블을 삭제하려는 쿼리문은 실행되지 않고 오류를 반환한다. 이와 같이 의존관계가 있는 테이블을 삭제하려 한다면, 자식에 해당하는 테이블을 먼저 삭제해야한다.
즉, Job 테이블을 삭제하기 위해서는 아래의 순서로 쿼리문을 실행하면 된다:
- EmployeeJob 삭제
- Job 삭제
1
2
3
4
5
-- (1)
DROP TABLE employee_job;
-- (2)
DROP TABLE job;
This post is licensed under CC BY 4.0 by the author.