數據庫之刪除表數據drop、truncate和delete的用法


數據庫中刪除表數據的關鍵字,最常用的可能就是delete了,另外其實還有drop和truncate兩個關鍵字。

老大:drop

命令格式:drop table  tb  ---tb表示數據表的名字,下同。

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

老二:truncate

命令格式:drop table  tb 

說明:刪除內容、釋放空間但不刪除定義,也就是數據表的結構還在。與drop不同的是,它只是清空表數據而已,它比較溫柔。

至於釋放空間,看下面兩幅圖就會明白:

image

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

image

上圖是經過truncate table Teacher 之后又新增了三條數據,發現Id標識列插入數據的時候,標識列連續了(體現了truncate刪除是釋放空間)。

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

老三:delete

命令格式:delete table tb   或  delete table tb  where 條件

說明:刪除內容不刪除定義,不釋放空間。其中,delete table tb 雖然也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)。

 

【關於truncate的總結】

1、truncate table 在功能上與不帶 WHERE 子句的 delete語句相同,二者均刪除表中的全部行,但 truncate 比 delete速度快,且使用的系統和事務日志資源少。

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

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

4、truncate 是一個DDL語言,向其他所有的DDL語言一樣,它將被隱式提交,不能對 truncate 使用ROLLBACK命令。

5、truncate 將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作后的表比Delete操作后的表要快得多。

6、truncate 不能觸發任何Delete觸發器。

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

8、不能清空父表。


免責聲明!

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



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