Post

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_idnamecreated_atemail 
     

Table 1: Job Table

job_idnamecreated_at
   

Table 2: EmployeeJob Table

employee_idjob_idhired_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 테이블을 삭제하기 위해서는 아래의 순서로 쿼리문을 실행하면 된다:

  1. EmployeeJob 삭제
  2. 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.