MySQL中除了DELETE語句可以刪除數據外,在MySQL中還可以利用TRUNCATE清空指定數據表中的所有數據。執行語句是
TRUNCATE [table] 表名
需要注意的是,TRUNCATE操作雖然與DELETE非常相似,但是兩者在本質上有一定的區別,具體如下。
實現方式不同:truncate本質上先執行刪除(DROP)數據表的操作,然后在根據有效的表結構文件(.frm)重新創建數據表的方式來實現數據清空操作。而DELETE語句則是逐條的刪除數據表中保存的記錄。
執行效率不同:在針對大型數據表(如千萬級的數據記錄)時,TRUNCATE清空數據的實現方式決定了它比DELETE語句刪除數據的方式執行效率更高。
對AUTO_INCREMENT的字段影響不同:TRUNCATE清空數據后,再次向表中添加數據,自動增長字段會從默認的初始值開始,而使用DELETE語句刪除表中的數據時,則不影響自動增長值。
刪除數據的范圍不同:TRUNCATE語句只能清空表中所有記錄,而DELETE語句可通過WHERE指定刪除滿足條件的部分記錄。
返回值含義不同:TRUNCATE操作的返回值一般是無意義的,而DELETE語句則會返回符合條件被刪除的記錄數。
所屬SQL語言的不同組成部分:DELETE語句數據DML數據操作語句,而TRUNCATE通常被認為是DDL數據定義部分。
拓展:
數據定義語言(Data Definition Language,DDL),用于定義和管理對象,例如數據庫、數據表以及視圖,例如:CREATE、DROP、ALTER等語句。
數據操作語言(Data Manipulation Language,DML),用于操作數據庫對象所包含的數據,例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。
數據查詢語言(Data Query Language,DQL),例如:SELECT語句。
數據控制語言(Data Control Language,DCL),用于控制對數據庫對象操作的權限,例如:GRANT、REVOKE、COMMIT、ROLLBACK等語句。






