MySQL 8.0 リファレンスマニュアル


13.1.32 DROP TABLE ステートメント

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 のリカバリの強制的な実行」を参照してください。


関連キーワード:  ステートメント, TABLE, CREATE, テーブル, DROP, 削除, サブクエリー, FUNCTION, SLAVE, 定義