DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP TABLE
會移除一個或多個表格。您必須對每個表格都擁有 DROP
權限。
這個陳述式要小心使用!對於每個表格,它會移除表格定義和所有表格資料。如果表格已分割,陳述式會移除表格定義、所有分割區、儲存在這些分割區中的所有資料,以及與已刪除表格相關聯的所有分割區定義。
刪除表格也會刪除該表格的所有觸發程序。
DROP TABLE
會導致隱含的提交,除非搭配使用 TEMPORARY
關鍵字。請參閱章節 15.3.3,“導致隱含提交的陳述式”。
當表格被刪除時,專門針對該表格授予的權限不會自動刪除。必須手動刪除它們。請參閱章節 15.7.1.6,“GRANT 陳述式”。
如果引數列表中指定的任何資料表不存在,DROP TABLE
的行為取決於是否給定 IF EXISTS
子句。
若沒有
IF EXISTS
,則語句會因錯誤而失敗,指出無法刪除哪些不存在的資料表,且不會進行任何變更。若有
IF EXISTS
,則不會因為不存在的資料表而發生錯誤。該語句會刪除所有確實存在的指定資料表,並為每個不存在的資料表產生一個NOTE
診斷訊息。這些註解可以使用SHOW WARNINGS
顯示。請參閱第 15.7.7.41 節,「SHOW WARNINGS Statement」。
IF EXISTS
在不尋常的情況下刪除資料表也很有用,例如資料字典中有條目,但儲存引擎沒有管理的資料表。(例如,如果從儲存引擎移除資料表後,但在移除資料字典條目之前發生伺服器異常退出。)
TEMPORARY
關鍵字有以下效果:
該語句僅刪除
TEMPORARY
資料表。該語句不會導致隱式提交。
不會檢查任何存取權限。
TEMPORARY
資料表僅對建立它的會話可見,因此無需檢查。
包含 TEMPORARY
關鍵字是避免意外刪除非 TEMPORARY
資料表的好方法。
RESTRICT
和 CASCADE
關鍵字沒有任何作用。允許它們是為了更容易從其他資料庫系統進行移植。
並非所有 innodb_force_recovery
設定都支援 DROP TABLE
。請參閱第 17.20.3 節,「強制 InnoDB 復原」。