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 陳述式」。
IF EXISTS
也可用於在不尋常的情況下刪除表格,在這種情況下,資料字典中存在一個條目,但儲存引擎沒有管理的表格。(例如,如果從儲存引擎中移除表格後,但在移除資料字典條目之前發生異常伺服器退出)。
TEMPORARY
關鍵字具有以下影響:
陳述式僅刪除
TEMPORARY
表格。陳述式不會導致隱式提交。
不檢查任何存取權限。
TEMPORARY
表格僅對建立它的會期可見,因此不需要檢查。
包含 TEMPORARY
關鍵字是防止意外刪除非 TEMPORARY
表格的好方法。
RESTRICT
和 CASCADE
關鍵字不起任何作用。允許它們的存在是為了更容易從其他資料庫系統移植。
並非所有 innodb_force_recovery
設定都支援 DROP TABLE
。請參閱第 17.20.3 節「強制 InnoDB 復原」。