在本教學中,您將學習如何使用SQL DELETE
語句刪除表中的一行或多行。
要從表中刪除一行或多行,請使用DELETE
語句。 DELETE
語句的一般語法如下:
DELETE
FROM
table_name
WHERE
condition;
table_name
)。WHERE
子句中指定條件以標識需要刪除的行記錄。 如果省略WHERE
子句,則將刪除表中的所有行記錄。 因此,應始終謹慎使用DELETE
語句。一般來說,DELETE
語句不會將結果集。 但是,它只返回已刪除的行數。
我們將使用employees
和dependents
表來演示DELETE
語句。
使用以下DELETE
語句從dependents
表中刪除ID為:16
的行記錄。
DELETE FROM dependents
WHERE
dependent_id = 16;
由於WHERE
子句包含主鍵表示式,因此DELETE
語句只刪除一行。可以使用以下語句驗證是否已刪除dependents
中ID為:16
的行記錄:
SELECT
COUNT(*)
FROM
dependents
WHERE
dependent_id = 16;
要刪除表中的多個行記錄,請使用WHERE
子句中的條件來選擇要刪除的行記錄。 例如,以下語句使用IN
運算子來刪除dependents
表中id
為100
,101
或102
的資訊。
DELETE FROM dependents
WHERE
employee_id IN (100 , 101, 102);
一名員工可能有零個或多個家屬,而一個受撫養人只屬於一名員工。 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_id
為199
的所有行也會自動刪除。
要更有效地從表中刪除所有行,可以使用TRUNCATE TABLE
語句,而不是使用不帶WHERE子句的DELETE
語句。
通過上面的範例和學習,您應該了解SQL DELETE
語句用法,以及如何應用它來刪除表中的一行或多行。