mysql資料庫中刪除資料的三種形式 drop和 truncate 和 delete

守護大白菜發表於2017-05-10

mysql資料庫中刪除資料的三種形式 drop 和 truncate 和 delete

三種刪除形式的強度由強到弱依次是:drop > truncate > delete

1:drop table  tb --tb表示資料表的名字,下同

    絕招:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增資料是不可能的,除非新增一個表.


2: truncate table tb

絕招:刪除內容、釋放空間(新增資料主鍵重新從1開始遞增)但不刪除定義(欄位還在)。與drop不同的是,他只是清空表資料而已,他比較溫柔.


3: delete table tb   --雖然也是刪除整個表的資料,但是過程是痛苦的(系統一行一行地刪,效率較truncate低) 或delete table tb where 條件
絕招:刪除內容不刪除定義,不釋放空間(新增資料主鍵接著刪除之前的主鍵遞增)。三兄弟之中最常用安全的一個.


小結:

1、truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。 
2、truncate 是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對 truncate 使用ROLLBACK命令。 
3、truncate 將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作後的表比Delete操作後的表要快得多。 
4、truncate 不能觸發任何Delete觸發器。 
5、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。 
6、不能清空父表

相關文章