DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP TABLE
は、1 つ以上のテーブルを削除します。 各テーブルに対する DROP
権限が必要です。
このステートメントを使用した注意してください。 テーブルごとに、テーブル定義およびすべてのテーブルデータが削除されます。 テーブルがパーティション化されている場合、ステートメントはテーブル定義、そのすべてのパーティション、それらのパーティションに格納されているすべてのデータ、および削除されたテーブルに関連付けられているすべてのパーティション定義を削除します。
テーブルを削除すると、そのテーブルのトリガーも削除されます。
DROP TABLE
では、TEMPORARY
キーワードとともに使用する場合を除き、暗黙的なコミットが発生します。 セクション13.3.3「暗黙的なコミットを発生させるステートメント」を参照してください。
テーブルを削除しても、そのテーブル専用に付与された権限は自動的には削除されません。 手動で削除する必要があります。 セクション13.7.1.6「GRANT ステートメント」を参照してください。
引数リストに指定されたテーブルが存在しない場合、DROP TABLE
の動作は IF EXISTS
句が指定されているかどうかによって異なります:
IF EXISTS
がない場合、ステートメントは失敗し、削除できなかった存在しないテーブルを示すエラーが表示され、変更は行われません。IF EXISTS
では、存在しないテーブルに対してエラーは発生しません。 このステートメントは、存在するすべての名前付きテーブルを削除し、存在しないテーブルごとにNOTE
診断を生成します。 これらのノートは、SHOW WARNINGS
で表示できます。 セクション13.7.7.42「SHOW WARNINGS ステートメント」を参照してください。
IF EXISTS
は、データディクショナリにエントリがあり、記憶域エンジンによって管理されるテーブルがない異常な状況でテーブルを削除する場合にも役立ちます。 (たとえば、ストレージエンジンからテーブルを削除したあと、データディクショナリエントリを削除する前に異常なサーバーイグジットが発生した場合。)
TEMPORARY
キーワードには、次の効果があります。
このステートメントは、
TEMPORARY
テーブルのみを削除します。このステートメントは暗黙的なコミットを引き起こしません。
アクセス権は確認されません。
TEMPORARY
テーブルは、それを作成したセッションでのみ表示されるため、チェックは必要ありません。
TEMPORARY
以外のテーブルを誤って削除しないようにするには、TEMPORARY
キーワードを含めることをお薦めします。
RESTRICT
および CASCADE
キーワードは何も行いません。 他のデータベースシステムからの移植を容易にすることができます。
DROP TABLE
はすべての innodb_force_recovery
設定でサポートされているわけではありません。 セクション15.21.2「InnoDB のリカバリの強制的な実行」を参照してください。