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

MySQL DELETE 語句刪除數據完整指南:語法、PHP 實現與最佳實踐

     編輯:MySQL 綜合教學

DELETE 語法基礎

DELETE FROM table_name WHERE column_name = some_value
  • WHERE 子句至關重要: 省略將刪除表中所有數據(不可回滾,除非在事務中)。
  • 大小寫不敏感: `DELETE FROM` 等同於 `delete from`。
  • PHP 執行範例

    $con = mysql_connect("localhost", "peter", "abc123");
    if (!$con) die('Could not connect: ' . mysql_error());
    
    mysql_select_db("my_db", $con);
    
    // 刪除 LastName='Griffin' 的所有記錄
    $sql = "DELETE FROM Person WHERE LastName='Griffin'";
    mysql_query($sql, $con);
    
    mysql_close($con);
    

    關鍵最佳實踐

    1. 先 SELECT 再 DELETE: 執行刪除前,用相同 WHERE 條件跑 SELECT 確認影響範圍。
    2. 使用 LIMIT 防誤刪: `DELETE FROM table WHERE condition LIMIT 1` 確保單次最多刪一行。
    3. 大量刪除分批處理: 避免長事務鎖表、binlog 膨脹、主從延遲。每批 500-1000 行,間隔睡眠。
    4. 外鍵約束: 刪除父表記錄前需處理子表關聯數據(CASCADE/SET NULL/手動清理)。
    5. TRUNCATE vs DELETE: 清空整表用 `TRUNCATE TABLE`,速度快、重置自增 ID、不觸發觸發器、不可回滾。

    遷移提醒

    舊代碼 `mysql_query()` → 新代碼 `mysqli_query($link, $sql)` 或 `$pdo->exec($sql)`。預處理寫法:

    $stmt = $mysqli->prepare("DELETE FROM Person WHERE LastName = ?");
    $stmt->bind_param("s", $lastName);
    $stmt->execute();
    echo "刪除行數: " . $stmt->affected_rows;
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved