DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP TABLE
は、1 つ以上のテーブルを削除します。各テーブルに対する DROP
権限が必要です。すべてのテーブルデータとテーブル定義が削除されるため、このステートメントには注意してください。引数リストで指定されているいずれかのテーブルが存在しない場合、MySQL は削除できなかった存在しないテーブルを名前で示すエラーを返しますが、リスト内の存在しているすべてのテーブルの削除も行います。
テーブルが削除されても、そのテーブルに対するユーザー権限は自動的には削除されません。セクション13.7.1.4「GRANT 構文」を参照してください。
パーティション化されたテーブルの場合は、DROP TABLE
によってテーブル定義、そのすべてのパーティション、およびそれらのパーティションに格納されていたすべてのデータが永続的に削除されることに注意してください。また、削除されたテーブルに関連付けられているパーティション化定義 (.par
) ファイルも削除されます。
存在しないテーブルに対してエラーが発生しないようにするには、IF EXISTS
を使用します。IF EXISTS
を使用している場合は、存在しないテーブルごとに NOTE
が生成されます。セクション13.7.5.41「SHOW WARNINGS 構文」を参照してください。
RESTRICT
と CASCADE
は、移植を容易にするために許可されています。MySQL 5.6 では、これらは何も行いません。
DROP TABLE
は、TEMPORARY
キーワードが使用されていないかぎり、現在のアクティブなトランザクションを自動的にコミットします。
TEMPORARY
キーワードには、次の効果があります。
このステートメントは、
TEMPORARY
テーブルのみを削除します。このステートメントは、進行中のトランザクションを終了しません。
アクセス権は確認されません。(
TEMPORARY
テーブルは、それを作成したセッションにのみ表示されるため、確認は必要ありません。)
TEMPORARY
の使用は、TEMPORARY
以外のテーブルを誤って削除してしまわないようにするための適切な方法です。