DELETE FROM table_name
WHERE column_name OPERATOR value [AND|OR ...];
WHERE 子句為可選,但生產環境嚴禁省略,否則將清空整張表。
DELETE FROM employee
WHERE lastname = 'May';
DELETE FROM employee
WHERE firstname = 'Mike' OR firstname = 'Eric';
DELETE FROM employee; -- 無 WHERE,刪除所有行!
若確需清空表,優先考慮 TRUNCATE TABLE(速度更快、不記錄行級日誌、可回滾)。
SELECT * FROM table WHERE ... 確認將刪除的行BEGIN TRAN ... DELETE ... COMMIT/ROLLBACKDELETE 權限最小化,僅 DBA 可執行INSTEAD OF DELETE 觸發器做軟刪除或審計| 命令 | 可回滾 | 觸發器 | 身份列重置 | 速度 |
|---|---|---|---|---|
| DELETE | 是 | 觸發 | 否 | 慢 |
| TRUNCATE | 是(隱式事務) | 不觸發 | 是 | 快 |
| DROP | 否 | 不觸發 | 表不存在 | 最快 |