DROP TABLE

DROP TABLEはテーブル(表)を削除するSQL文です。

Oracle

DROP TABLE [schema.]table [CASCADE CONSTRAINTS]
schema
削除する表が存在するスキーマの名前。 schema を省略した場合、自分のスキーマ内にある表を削除する。自分のスキーマ以外の表を削除するには、 DROP ANY TABLE システム権限が必要である。
SQL> DROP TABLE tsuka.emp;
table
削除する表を指定する。
SQL> DROP TABLE emp;
CASCADE CONSTRAINTS
外部キー制約ごと表を削除する。

削除しようとする表の中に、他の表から外部キー制約で参照されている列が含まれている場合はエラーとなり、表は削除できない。これは、参照先の表が削除されてしまうと、参照元の外部キー制約がすべて制約違反になってしまい、データの整合性が無くなってしまうからである。

外部キー制約で参照されている表
Figure 1. 外部キー制約で参照されている表

この場合、 CASCADE CONSTRAINTS 句を指定すると、参照元の外部キー制約ごと表を削除することができる。

外部キー制約ごと表を削除
Figure 2. 外部キー制約ごと表を削除

外部キー制約ごと表を削除する例を以下に示す。

SQL> DROP TABLE dept CASCADE CONSTRAINTS;

DROP TABLEに必要な権限

自分のスキーマ内にある表を削除するには、とくに権限は必要ない。

他のスキーマ内にある表を削除するには、DROP ANY TABLEシステム権限が必要である。

MySQL

ひとつ以上のテーブルを削除する。

DROP [ TEMPORARY ] TABLE
  [ IF EXISTS ]
  table_name [ , table_name ] ...
  [ CASCADER | ESTRICT ]
IF EXISTS
指定したテーブルが存在しなくてもエラーにならない。

PostgreSQL

テーブルを削除する。

DROP TABLE
  [ IF EXISTS ]
  table_name [ , table_name ] ...
  [ CASCADE | RESTRICT ]
IF EXISTS
指定したテーブルが存在しなくてもエラーにならない。
table_name
削除するテーブルの名前(スキーマ修飾名も可)

関連SQL