摘要:在本教程中,您將學習如何使用 SQL DELETE 語句從表中刪除一行或多行資料。
SQL DELETE 語句簡介 #
在 SQL 中,DELETE 語句允許您根據條件從表中刪除一行或多行。
這是 DELETE 語句的語法:
DELETE FROM table_name
WHERE condition;Code language: SQL (Structured Query Language) (sql)在此語法中:
- 首先,提供要從中刪除行的表的名稱。
- 其次,在
WHERE子句中指定一個條件,以確定要刪除的行。
WHERE 子句是可選的。如果省略 WHERE 子句,DELETE 語句將刪除表中的所有行。
DELETE FROM table_name;通常,DELETE 語句會向客戶端返回被刪除的行數。
一些資料庫系統(如 PostgreSQL)會向客戶端返回一個包含已刪除行的結果集。
如果您從一個帶有 ON DELETE CASCADE 選項的外部索引鍵約束的表中刪除資料,DELETE 語句也會刪除相關表中的行。
SQL DELETE 語句示例 #
我們將使用 employees 和 dependents 表來演示 DELETE 語句。

從表中刪除一行 #
假設員工 ID 為 105 的 David 想要從他的家屬列表中移除 Fred。
我們知道 Fred 的家屬 ID 是 16,所以我們使用以下 DELETE 語句從 dependents 表中刪除 Fred。
DELETE FROM dependents
WHERE dependent_id = 16;Code language: SQL (Structured Query Language) (sql)由於 WHERE 子句包含了唯一標識 Fred 的主鍵表示式,DELETE 語句從 dependents 表中刪除了一行。
要驗證家屬 ID 為 16 的行已被刪除,您可以查詢 dependents 表的資料。
SELECT
*
FROM
dependents
WHERE
dependent_id = 16;Code language: SQL (Structured Query Language) (sql)該查詢返回一個空結果集,意味著 dependent_id 為 16 的行已被刪除。
從表中刪除多行 #
要從表中刪除多行,您可以在 WHERE 子句中使用條件來指定要刪除的行。
例如,以下語句在 DELETE 語句的 WHERE 子句中使用 IN 運算子來刪除家屬 ID 為 1、2 和 3 的行。
DELETE FROM dependents
WHERE dependent_id IN (1, 2, 3);Code language: SQL (Structured Query Language) (sql)從表中刪除所有行 #
以下示例使用不帶 WHERE 子句的 DELETE 語句來刪除 dependents 表中的所有行。
DELETE FROM dependents;要更高效地刪除表中的所有行,您應該使用 TRUNCATE TABLE 語句,而不是使用不帶 WHERE 子句的 DELETE 語句。
摘要 #
- 使用
DELETE語句從表中刪除一行或多行。 - 使用不帶
WHERE子句的DELETE語句從表中刪除所有行。
測驗 #
資料庫 #
- PostgreSQL DELETE 語句
- MySQL DELETE 語句
- MariaDB DELETE 語句
- SQLite DELETE 語句
- Db2 DELETE 語句
- Oracle DELETE 語句
- SQL Server DELETE 語句