1. 程式人生 > 其它 >MySQL-DDL-TRUNCATE、DROP、DELETE 刪除

MySQL-DDL-TRUNCATE、DROP、DELETE 刪除

 

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語句將表所佔用的空間全釋放掉。