TRUNCATE vs DELETE命令
生活随笔
收集整理的這篇文章主要介紹了
TRUNCATE vs DELETE命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TRUNCATE vs DELETE命令
作用:用于完全清空表數據 , 但表結構 , 索引 , 約束等不變 ;
語法:
TRUNCATE [TABLE] table_name;-- 清空年級表 TRUNCATE grade注意:區別于DELETE命令
-
相同 : 都能刪除數據 , 不刪除表結構 , 但TRUNCATE速度更快
-
不同 :
-
- 使用TRUNCATE TABLE 重新設置AUTO_INCREMENT計數器
- 使用TRUNCATE TABLE不會對事務有影響 (事務后面會說)
測試:
-- 創建一個測試表 CREATE TABLE `test` ( `id` INT(4) NOT NULL AUTO_INCREMENT, `coll` VARCHAR(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8-- 插入幾個測試數據 INSERT INTO test(coll) VALUES('row1'),('row2'),('row3');-- 刪除表數據(不帶where條件的delete) DELETE FROM test; -- 結論:如不指定Where則刪除該表的所有列數據,自增當前值依然從原來基礎上進行,會記錄日志.-- 刪除表數據(truncate) TRUNCATE TABLE test; -- 結論:truncate刪除數據,自增當前值會恢復到初始值重新開始;不會記錄日志.-- 同樣使用DELETE清空不同引擎的數據庫表數據.重啟數據庫服務后 -- InnoDB : 自增列從初始值重新開始 (因為是存儲在內存中,斷電即失) -- MyISAM : 自增列依然從上一個自增數據基礎上開始 (存在文件中,不會丟失)truncate 影響自增
delete 不影響自增
總結
以上是生活随笔為你收集整理的TRUNCATE vs DELETE命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1公里多少千米 1公里到底是多少千米呢
- 下一篇: count() * ,1,字段 三