SQL Delete語句


在本教學中,您將學習如何使用SQL DELETE語句刪除表中的一行或多行。

1. SQL DELETE語句簡介

要從表中刪除一行或多行,請使用DELETE語句。 DELETE語句的一般語法如下:

DELETE
FROM
    table_name
WHERE
    condition;
  • 首先,提供要刪除行的表名稱(table_name)。
  • 其次,在WHERE子句中指定條件以標識需要刪除的行記錄。 如果省略WHERE子句,則將刪除表中的所有行記錄。 因此,應始終謹慎使用DELETE語句。

一般來說,DELETE語句不會將結果集。 但是,它只返回已刪除的行數。

2. SQL DELETE語句範例

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

2. SQL刪除表中的一行

使用以下DELETE語句從dependents表中刪除ID為:16的行記錄。

DELETE FROM dependents 
WHERE
    dependent_id = 16;

由於WHERE子句包含主鍵表示式,因此DELETE語句只刪除一行。可以使用以下語句驗證是否已刪除dependents中ID為:16的行記錄:

SELECT 
    COUNT(*)
FROM
    dependents
WHERE
    dependent_id = 16;

3. SQL DELETE多行範例

要刪除表中的多個行記錄,請使用WHERE子句中的條件來選擇要刪除的行記錄。 例如,以下語句使用IN運算子來刪除dependents表中id100,101102的資訊。

DELETE FROM dependents 
WHERE
    employee_id IN (100 , 101, 102);

4. SQL DELETE來自相關表的行

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

員工與家屬表之間的關係是一對多的。

從邏輯上講,如果不參照員工,就不能存在依賴關係。 換句話說,當刪除員工資訊時,他/她的家屬也必須要刪除。

例如,要刪除員工ID為199和所有員工的依賴項,需要執行兩個DELETE語句,如下所示:

DELETE
FROM
    employees
WHERE
    employee_id = 199;

DELETE
FROM
    dependents
WHERE
    employee_id = 199;

大多數資料庫系統都支援外來鍵約束,因此當刪除表中的一行時,外來鍵表中的行也會自動刪除。

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

DELETE
FROM
    employees
WHERE
    employee_id = 199;

在執行上面語句後,employee_id199的所有行也會自動刪除。

要更有效地從表中刪除所有行,可以使用TRUNCATE TABLE語句,而不是使用不帶WHERE子句的DELETE語句。

通過上面的範例和學習,您應該了解SQL DELETE語句用法,以及如何應用它來刪除表中的一行或多行。