id 自增------刪除數據后恢復到刪除前自增id


刪除數據后,執行下面語句: 

    ALTER TBALE TableName AUTO_INCREMENT=1

mysql刪除比較

一、DROP

  drop  table tablename

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

二、TRUNCATE

  truncate table tablename

    絕招:刪除內容、釋放空間但不刪除定義(表定義和結構)。與drop不同的是,他只是清空表數據而已.執行語句之后,發現數據表的結構還在,也就是不刪除定義.

 

三、DELETE

    delete from tbname 清空表

    delete form tablename where 刪除某條記錄

    絕招: --雖然也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)

至於釋放空間,看下下面兩幅圖.你們就會明白的

上圖:Id列標識列,因之前delete過行數據,所以會出現標識列不連續(體現了delete刪除是不釋放空間的)

  經過truncate table Teacher 之后 再新增三條數據

上圖:同樣Id是標識列,發現插入數據的時候,標識列連續了(體現了truncate刪除是釋放空間)

注意:truncate 不能刪除行數據,要刪就要把表清空

比較:

  truncate 和 delete 都可以清空表但是,truncate 比 delete速度快,且使用的系統和事務日志資源少。

  TRUNCATE TABLE TableName是一種快速的,無日志記錄的,刪除表中所有記錄的方法。

  delete 語句每次刪除一行,並在事務日志中為所刪除的每行記錄一項。所以可以對delete操作進行roll back

  當使用truncate  表被清空后表和表的索引講重新設置成初始大小,而delete則不能。

    truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM