SQL DELETE

摘要: 在本教學中,您將學習如何使用 SQL DELETE 語句來刪除表格中的一或多列。

SQL DELETE 語句簡介

若要從表格中移除一或多列,您可以使用 DELETE 語句。DELETE 語句的一般語法如下:

DELETE
FROM
	table_name
WHERE
	condition;Code language: SQL (Structured Query Language) (sql)

首先,提供您要移除列的表格名稱。

其次,在 WHERE 子句中指定條件,以識別需要刪除的列。如果您省略 WHERE 子句,則表格中的所有列都將被刪除。因此,您應該始終謹慎使用 DELETE 語句。

一般來說,DELETE 語句不像 SELECT 語句那樣返回結果集。但是,它確實會返回已刪除的列數。

SQL DELETE 語句範例

我們將使用 employeesdependents 表格來示範 DELETE 語句。

employees_dependents_tables

SQL DELETE 表格中的一列

假設員工 ID 為 105 的 David,想要從他的受撫養人清單中移除 Fred。我們知道 Fred 的受撫養人 ID 為 16,因此我們使用以下 DELETE 語句將 Fred 從 dependents 表格中移除。

DELETE FROM dependents 
WHERE
    dependent_id = 16;Code language: SQL (Structured Query Language) (sql)

試試看

由於 WHERE 子句包含識別 Fred 的主鍵表達式,因此 DELETE 語句僅刪除一列。

您可以使用以下語句驗證受撫養人 ID 為 16 的列是否已被刪除

SELECT 
    COUNT(*)
FROM
    dependents
WHERE
    dependent_id = 16;Code language: SQL (Structured Query Language) (sql)

試試看

SQL DELETE one row example

SQL DELETE 多列範例

若要刪除表格中的多列,您可以使用 WHERE 子句中的條件來識別應刪除的列。例如,以下語句使用 IN 運算符,以包含員工 ID 為 100、101 或 102 的受撫養人。

DELETE FROM dependents 
WHERE
    employee_id IN (100 , 101, 102);Code language: SQL (Structured Query Language) (sql)

試試看

SQL 從相關表格中刪除列

一位員工可能擁有零個或多個受撫養人,而一位受撫養人僅屬於一位員工。dependents 表格中的 employee_id 列連結到 employees 表格中的 employee_id 列。

employeesdependents 表格之間的關係是一對多。

從邏輯上講,受撫養人不能在沒有參考員工的情況下存在。換句話說,當您刪除一名員工時,其受撫養人也必須被刪除。

例如,要移除員工 ID 為 192 的員工及其所有受撫養人,您需要執行兩個 DELETE 語句,如下所示

DELETE
FROM
	employees
WHERE
	employee_id = 192;

DELETE
FROM
	dependents
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試試看

大多數資料庫系統都支援外鍵約束,以便在刪除表格中的一列時,也會自動移除外鍵表格中的列。

因此,當執行以下 DELETE 語句時

DELETE
FROM
	employees
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

試試看

所有 employee_id 為 192 的列也會被自動移除。

若要更有效地移除表格中的所有列,您可以使用 TRUNCATE TABLE 語句,而不是使用沒有 WHERE 子句的 DELETE 語句。

現在,您應該了解 SQL DELETE 語句,以及如何應用它來移除表格中的一或多列。

這個教學對您有幫助嗎?