您好,登錄后才能下訂單哦!
sqlserver中truncate和delete語句如何使用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
truncate
出沒場合:truncate table tb
絕招:刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表數據而已,他比較溫柔.
同樣也是一個班,他只去除所有的學生.班還在,職務還在,如果有新增的學生可以進去,也可以分配上職務
刪除內容很容易理解,不刪除定義也很容易理解,就是保留表的數據結構
上圖就表現了:刪除內容
執行語句之后,發現數據表的結構還在,也就是不刪除定義
至于釋放空間,看下下面兩幅圖.你們就會明白的
右圖:Id列標識列,因之前delete過行數據,所以會出現標識列不連續(體現了delete刪除是不釋放空間的)
經過truncate table Teacher 之后 再新增三條數據
右圖:同樣Id是標識列,發現插入數據的時候,標識列連續了(體現了truncate刪除是釋放空間)
注意:truncate 不能刪除行數據,要刪就要把表清空
delete
出沒場合:delete table tb --雖然也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)
或
delete table tb where 條件
絕招:刪除內容不刪除定義,不釋放空間。三兄弟之中最容易欺負的一個
然后關于delete的就不詳細說明了,大家都懂的
關于truncate的小小總結:
truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行。
但 truncate 比 delete速度快,且使用的系統和事務日志資源少。
delete 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。所以可以對delete操作進行roll back
1、truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。
2、truncate 是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對 truncate 使用ROLLBACK命令。
3、truncate 將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作后的表比Delete操作后的表要快得多。
4、truncate 不能觸發任何Delete觸發器。
5、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。
6、不能清空父表
關于sqlserver中truncate和delete語句如何使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。