1. 程式人生 > >用delete和trancate刪除表記錄的區別

用delete和trancate刪除表記錄的區別

區分 auto 區別 但是 重新 src 測試 delet 試用

首先說相同點,就是他們都能刪除表中的數據,

區別有兩點,

第一點:delete語句在刪除記錄的時候可以有選擇的刪除某些數據(使用where子句),當然,如果不添加where子句,就是刪除所有記錄

    而trancete語句則是清空表中所有數據,沒有其他選擇說某些東西不刪,某些東西刪了。

第二點:當表中的主鍵是自動增長(auto_increment)時,用delete刪除完數據之後,再往表中插入數據,當數據的主鍵為空,其自動增長時,並不是從1開始,也就是說,delete雖然刪除了數據,但是,他並沒有將主鍵自增的那一塊重新設為1。

    而truncate則做了這件事,它不僅將數據全部清空,還將主鍵自增的值初始為1。

總的來說可以用一句話區分:

  delete只刪數據,不清痕跡;trancate既刪數據,又清痕跡。

以下實驗,一看就明白:

技術分享

第一次測試用delete刪除所有數據,然後在主鍵為空插入數據

技術分享

然後用truncate刪除數據,在進行主鍵為空插入

技術分享

用delete和trancate刪除表記錄的區別