SQL - 刪除表



SQL 提供命令來完全刪除資料庫中現有的表。一旦發出 SQL DROP 命令,就無法恢復該表,包括其資料,因此在生產系統中發出此命令之前要小心。

SQL DROP 表語句

SQL 的 **DROP TABLE** 語句是資料定義語言 (DDL) 命令,用於刪除表的定義及其資料、索引、觸發器、約束和許可權規範(如果有)。

**注意** -

  • 使用此命令時要非常小心,因為一旦刪除了表,該表中所有可用資訊也將永遠丟失。

  • 如果表已分割槽,則該語句將刪除表定義、其所有分割槽、儲存在這些分割槽中的所有資料以及所有分割槽定義。

  • 要在資料庫中刪除表,必須對該表具有 ALTER 許可權,對錶模式具有 CONTROL 許可權。

  • 儘管它是一個數據定義語言命令,但它與 TRUNCATE TABLE 語句不同,因為 DROP 語句完全釋放了表佔用的記憶體。

  • DROP TABLE 會導致隱式提交,除非與 TEMPORARY 關鍵字一起使用。

語法

此 DROP TABLE 語句的基本語法如下所示 -

DROP TABLE table_name;

示例

假設我們使用 CREATE TABLE 語句建立了一個名為 CUSTOMERS 的表,如下所示 -

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

讓我們首先使用 DESC 命令驗證 CUSTOMERS 表,然後將其從資料庫中刪除 -

DESC Table

如果表已成功建立,則 DESC 命令將顯示錶的結構,如下所示 -

欄位 型別 預設值 額外
ID int(11) PRI NULL
NAME varchar(20) NULL
AGE int(11) NULL
ADDRESS char(25) NULL
SALARY decimal(18,2) NULL

這意味著 CUSTOMERS 表存在於資料庫中,因此讓我們現在將其刪除,如下所示。

DROP TABLE CUSTOMERS;

輸出

輸出如下所示 -

Query OK, 0 rows affected (0.001 sec)

驗證

現在,要驗證表是否已實際刪除,可以使用 DESC CUSTOMERS 命令,如下所示 -

DESC CUSTOMERS;

顯示以下錯誤 -

ERROR 1146 (42S02): Table 'tutorials.CUSTOMERS' doesn't exist
使用 SQL DROP 命令刪除 MySQL 表時,專門授予該表的許可權不會自動刪除。它們必須手動刪除。

IF EXISTS 子句

您可以使用 DROP TABLE 語句中的 IF EXISTS 子句,而不是始終檢查表在資料庫中是否存在然後再刪除它。

此子句在 DROP TABLE 查詢中指定時,將自動檢查表是否存在於當前資料庫中,如果存在則將其刪除。如果表不存在於資料庫中,則將忽略該查詢。

語法

以下是 DROP TABLE IF EXISTS 的基本語法 -

DROP TABLE [IF EXISTS] table_name;

示例

如果您嘗試刪除資料庫中不存在的表,而不使用 IF EXISTS 子句,如下所示 -

DROP TABLE CUSTOMERS;

將生成錯誤 -

ERROR 1051 (42S02): Unknown table 'tutorials.CUSTOMERS'

如果您將 **IF EXISTS** 子句與 DROP TABLE 語句一起使用,如下所示,則將刪除指定的表,如果資料庫中不存在具有給定名稱的表,則將忽略該查詢。

但是,如果您嘗試刪除資料庫中不存在的表,使用 IF EXISTS 子句,如下所示 -

DROP TABLE IF EXISTS CUSTOMERS;

該查詢將被忽略,並顯示以下輸出 -

Query OK, 0 rows affected, 1 warning (0.001 sec)

DROP - 臨時表

您可以將 **TEMPORARY** 關鍵字與 DROP TABLE 語句一起使用,這將僅刪除臨時表。包含 TEMPORARY 關鍵字是防止意外刪除非臨時表的好方法。

語法

DROP TEMPORARY TABLE TEMP_TABLE;

示例

以下是如何刪除名為 CUSTOMERS 的臨時表的示例。

DROP TEMPORARY TABLE CUSTOMERS;
廣告