MySQL-DDL-TRUNCATE、DROP、DELETE 刪除
阿新 • • 發佈:2022-04-19
1、TRUANCATE TABLE table_name
刪除所有資料(截斷表),保留表結構,不可回滾(刪除需謹慎),速度相對較快,truncate不能對有外來鍵約束引用的表使用
2、DROP (DDL)刪除資料和表結構,刪除速度最快。
DROP DATABASE <資料庫名>;
DROP TABLE [IF EXISTS] <表名1> [ , <表名2> , <表名3> …]; # 刪除表
DROP INDEX <索引名> ON <表名> # 刪除索引
DROP IF EXISTS VIEW <檢視名1> [ , <檢視名2> …]
3、DELETE(DML):DELETE FROM table_name [WHERE Clause]
按行逐條刪除資料,保留表結構,可以回滾,資料量大時很慢。
三種刪除方法對比:
TRUANCATE只能作用於表,DROP可作用於庫、表、檢視等;
TRUANCATE會清空表中的所有行,但表結構及其約束、索引等保持不變;DROP會刪除表的結構及其所依賴的約束、索引等;
TRUANCATE會重置表的自增值;DELETE不會,TRUANCATE不會啟用與表有關的刪除觸發器,DELETE可以;
TRUANCATE後會使表和索引所佔用的空間會恢復到初始大小,DELETE操作不會減少表或索引所佔用的空間,DROP語句將表所佔用的空間全釋放掉。