首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL DELETE 語句完整教學:刪除資料語法、WHERE 重要性與實戰範例

     編輯:SQL 基礎

SQL DELETE 語句完整教學


DELETE 用於移除資料表中的資料列。操作不可逆,執行前務必確認 WHERE 條件正確,避免誤刪全表資料。


基本語法

DELETE FROM table_name
WHERE some_column = some_value;
  • WHERE 子句指定要刪除的資料列條件。
  • 省略 WHERE 將刪除表中所有資料!

演示資料庫:RUNOOB 範例資料

Websites 表(刪除前)

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘寶         | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鳥教程     | https://www.runoob.com/    | 4689  | CN      |
| 4  | 微博         | https://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 6  | 百度         | https://www.baidu.com/    | 4     | CN      |
| 7  | stackoverflow| https://stackoverflow.com/ | 0     | IND     |
+----+--------------+---------------------------+-------+---------+

實戰範例

範例:刪除 name='百度' 且 country='CN' 的資料

DELETE FROM Websites
WHERE name = '百度' AND country = 'CN';

執行後讀取 Websites 表:

id=6 的百度資料已移除,其餘資料保留。


刪除所有資料(保留表結構)

DELETE FROM table_name;

或

DELETE * FROM table_name;
  • 表結構、索引、約束、權限保持不變。
  • 自動遞增計數器通常不重置(MySQL TRUNCATE 會重置)。
  • 觸發器會逐列觸發,大量刪除效能較差。

DELETE vs TRUNCATE vs DROP 比較

指令刪除資料保留結構重置自增觸發器可回滾速度
DELETE是(可帶 WHERE)是否逐列觸發是(交易中)慢
TRUNCATE是(全表)是是不觸發視資料庫而定快
DROP TABLE是(連結構)否N/A不觸發視資料庫而定最快

安全操作最佳實務

  1. 先用 SELECT 驗證:SELECT * FROM Websites WHERE name='百度' AND country='CN'; 確認目標資料無誤。
  2. 使用交易:BEGIN; DELETE ...; -- 確認無誤 COMMIT; -- 或 ROLLBACK;
  3. 生產環境加備份:刪除前備份目標表或全庫。
  4. 權限最小化:應用帳號僅賦予必要刪除權限,避免誤操作。
  5. 軟刪除設計:業務允許時,改用 is_deleted 標記而非物理刪除。

外鍵約束影響

若被刪除資料被其他表外鍵參考,且約束為 RESTRICT(預設),刪除會失敗。選項包括:

  • ON DELETE CASCADE:級聯刪除關聯資料。
  • ON DELETE SET NULL:關聯欄位設為 NULL。
  • 應用層先處理關聯資料再刪除主表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved