首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL DELETE 刪除數據完整教學:語法、PHP 實戰與安全刪除策略

     編輯:MySQL 資料庫相關知識

DELETE FROM 是 MySQL 移除表中記錄的核心語句。本文系統講解語法結構、條件控制、PHP 調用實戰、TRUNCATE 對比、事務回滾與安全刪除最佳實踐,助你精準高效清理數據。

一、 基礎語法

DELETE FROM table_name
WHERE column_name = some_value;
  • WHERE 子句:**條件過濾,決定刪除哪些行**。省略 WHERE 將刪除全表所有行,不可逆!
  • SQL 不區分大小寫:DELETE FROM = delete from。

二、 PHP 調用實戰(mysqli 推薦)

<?php
$mysqli = new mysqli("localhost", "peter", "abc123", "my_db");
if ($mysqli->connect_errno) {
    die("Connect failed: " . $mysqli->connect_error);
}

// 刪除姓 Griffin 的所有記錄
$sql = "DELETE FROM Person WHERE LastName = 'Griffin'";

if ($mysqli->query($sql) === TRUE) {
    echo "刪除成功,影響行數: " . $mysqli->affected_rows;
} else {
    echo "刪除失敗: " . $mysqli->error;
}

$mysqli->close();
?>

刪除前後數據對比

FirstNameLastNameAge (刪除前)刪除後
PeterGriffin35已刪除
GlennQuagmire33保留

三、 核心對比:DELETE vs TRUNCATE

特性DELETETRUNCATE
語法類型DML (數據操作語言)DDL (數據定義語言)
WHERE 條件支援不支援(只能全表)
觸發器觸發 BEFORE/AFTER DELETE不觸發
自增計數器保留重置為 1
事務支援支援(可回滾)隱式提交,不可回滾
鎖粒度行鎖表鎖
速度較慢(逐行刪除、記錄日誌)極快(釋放數據頁、重建表)
適用場景條件刪除、需觸發器、需回滾全表清空、重置自增 ID、大表快速清理

四、 安全刪除最佳實踐

1. 鐵律:先 SELECT 再 DELETE

-- 步驟 1:驗證條件命中行
SELECT * FROM Person WHERE LastName = 'Griffin';
-- 確認無誤後
-- 步驟 2:執行刪除
DELETE FROM Person WHERE LastName = 'Griffin';

2. 關鍵業務包裹事務

$mysqli->begin_transaction();
try {
    $mysqli->query("DELETE FROM order_items WHERE order_id = 1001");
    $mysqli->query("DELETE FROM orders WHERE id = 1001");
    $mysqli->commit();
} catch (Exception $e) {
    $mysqli->rollback();
}

3. 防誤刪:軟刪除模式

在表中增加 deleted_at DATETIME NULL 或 is_deleted TINYINT DEFAULT 0 字段:

-- 邏輯刪除
UPDATE Person SET is_deleted = 1, deleted_at = NOW() WHERE id = 123;

-- 查詢時自動過濾
SELECT * FROM Person WHERE is_deleted = 0;

優點:數據可恢復、審計追蹤、避免外鍵約束衝突。

4. 大表分批刪除(避免長事務與鎖升級)

-- 每次刪 1000 行,循環直到 affected_rows = 0
DELETE FROM huge_table 
WHERE create_time < '2020-01-01' 
LIMIT 1000;

配合 affected_rows 判斷循環終止,可在應用層或存儲過程中實現。

五、 常見錯誤避坑

錯誤後果預防
漏寫 WHERE全表清空,數據永久丟失代碼審查強制檢查、生產環境只讀賬號
條件寬泛誤刪關鍵數據業務故障、需從備份恢復先 SELECT 確認、軟刪除模式
外鍵約束報錯刪除失敗、事務回滾先刪子表、或設置 ON DELETE CASCADE
大事務導致主從延遲從庫同步延遲數小時分批刪除、低峰期執行

六、 總結

DELETE 是精準刪除利器,TRUNCATE 是全表清空神器。**安全刪除三部曲:驗證條件 → 包裹事務 → 考慮軟刪除**。掌握分批刪除與外鍵處理,即可從容應對從單行清理到 TB 級大表歸檔的各類場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved