SQL - 刪除表



SQL DELETE 是資料操縱語言 (DML) 的一個命令,因此它不會刪除或修改表結構,而只會刪除表中包含的資料。因此,在您從表中刪除資料後,表中定義的任何約束、索引或觸發器仍然存在。

SQL DELETE TABLE 語句

SQL DELETE TABLE 語句用於從資料庫中的表中刪除現有記錄。如果您只想從表中刪除特定數量的行,可以使用 DELETE 語句和 WHERE 子句。如果省略 WHERE 子句,則將刪除表中的所有行。SQL DELETE 語句一次只能操作一個表。

語法

以下是 SQL 中使用 SQL DELETE 命令的基本語法:

DELETE FROM table_name;

帶有 WHERE 子句的 SQL DELETE TABLE

我們可以使用 SQL DELETE 語句根據單個條件使用 WHERE 子句從表中刪除特定行。

語法

以下是根據單個條件刪除特定行的語法:

DELETE FROM table_name
WHERE condition;

示例

假設我們建立了一個名為 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)
);

現在使用 INSERT 語句向此表中插入值,如下所示:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

如果您使用 SELECT * FROM CUSTOMERS 語句檢索上面建立的表的內容,您將獲得以下輸出:

ID 姓名 年齡 地址 工資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

現在,讓我們嘗試刪除所有名為“Hardik”的客戶,如下面的查詢所示:

DELETE FROM CUSTOMERS WHERE NAME='Hardik';

輸出

我們得到以下結果。我們可以觀察到已刪除 1 行。

Query OK, 1 row affected (0.05 sec)

驗證

現在,如果您使用 SELECT * FROM CUSTOMERS 命令檢索 CUSTOMERS 表的內容,您將獲得以下輸出:

ID 姓名 年齡 地址 工資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

基於多個條件刪除行

我們還可以使用 SQL DELETE TABLE 語句根據多個條件使用 WHERE 子句從表中刪除特定行。當我們想要刪除滿足特定條件的表中的行子集時,這很有用。

當使用多個條件時,我們可以使用 AND、OR 和 NOT 等比較運算子來細化我們的條件。這樣,只有滿足條件的行才會被刪除。

語法

以下是根據多個條件刪除特定行的基本語法,可以使用 AND 或 OR 運算子連線這些條件:

DELETE FROM table_name
WHERE condition1 AND condition2 OR ... conditionN;

這裡,table_name 是我們要從中刪除行的表的名稱,condition1 到 conditionN 是必須滿足才能刪除行的條件。可以使用 AND 或 OR 運算子將條件連線在一起。

示例

在下面的查詢中,我們嘗試刪除所有姓名為“Komal”或地址為“Mumbai”的客戶:

DELETE FROM CUSTOMERS 
WHERE NAME='Komal' OR ADDRESS='Mumbai';

輸出

我們得到以下結果。我們可以觀察到已刪除 2 行。

Query OK, 2 rows affected (0.03 sec)

驗證

現在,如果您使用 SELECT * FROM CUSTOMERS 命令檢索 CUSTOMERS 表的內容,您將獲得以下輸出:

ID 姓名 年齡 地址 工資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

刪除表中所有記錄

我們可以使用沒有 WHERE 子句的 SQL DELETE TABLE 語句來刪除 SQL 表中的所有記錄。此語句將從指定的表中刪除所有行,有效地將表重置為其原始狀態(僅包含結構及其約束)。

但是,需要注意的是,此操作無法撤消,表中的所有資料都將被永久刪除。

示例

在這裡,我們嘗試從 CUSTOMERS 表中刪除所有記錄:

DELETE FROM CUSTOMERS;

輸出

以下是執行上述查詢後產生的結果:

Query OK, 4 rows affected (0.13 sec)

驗證

現在,如果您使用 SELECT * FROM CUSTOMERS 語句檢索 CUSTOMERS 表的內容,您將獲得以下結果:

Empty set (0.00 sec)
廣告