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

MySQL DELETE、TRUNCATE、DROP 三大刪除指令差異對照與選用指南

     編輯:MySQL 綜合教學

共同點

皆可刪除表內資料(DELETE 無 WHERE 時)。

差異對照表

維度DELETETRUNCATEDROP
語法DELETE FROM t [WHERE...]TRUNCATE TABLE tDROP TABLE t
刪除範圍可指定條件刪除部分僅能清空全表刪除表結構與資料
表結構保留保留(隱式 Drop+Recreate)刪除
語句類型DMLDDLDDL
事務/回滾支援,寫入 Rollback Segment不支援,立即生效不支援
觸發器觸發 ON DELETE不觸發不觸發
AUTO_INCREMENT保留下一值重置為 1表不存在
空間/High Water Mark不釋放,HWM 不動釋放至 MINEXTENTS (除非 REUSE STORAGE),HWM 歸零完全釋放
速度最慢中等最快
鎖類型行鎖表鎖表鎖

選用決策

  • 刪除**部分資料** → DELETE WHERE ...(務必加 WHERE)
  • 刪除**整張表**(結構也不要) → DROP TABLE
  • 保留結構、清空全表、**無事務需求** → TRUNCATE TABLE(最快)
  • 保留結構、清空全表、**需事務/觸發器** → DELETE FROM table
  • 整理碎片 → TRUNCATE TABLE t REUSE STORAGE 後重新匯入

安全警示

無備份嚴禁執行 TRUNCATE/DROP,資料不可回滾。生產環境建議軟刪除或先備份。

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