共計 1894 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章給大家介紹如何在 SQL 中使用 Truncate,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一、Truncate 語法
[ { database_name.[ schema_name ]. | schema_name . } ]
table_name
[ ; ]
參數
database_name
數據庫的名稱。
schema_name
表所屬架構的名稱。
table_name
要截斷的表的名稱,或要刪除其全部行的表的名稱。
二、Truncate 使用注意事項
1、TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日志資源少。
2、DELETE 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,并且只在事務日志中記錄頁的釋放。
3、TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
4、對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發器。
5、TRUNCATE TABLE 不能用于參與了索引視圖的表。
6、對用 TRUNCATE TABLE 刪除數據的表上增加數據時,要使用 UPDATE STATISTICS 來維護索引信息。
7、如果有 ROLLBACK 語句,DELETE 操作將被撤銷,但 TRUNCATE 不會撤銷。
三、不能對以下表使用 TRUNCATE TABLE
1、由 FOREIGN KEY 約束引用的表。(您可以截斷具有引用自身的外鍵的表。)
2、參與索引視圖的表。
3、通過使用事務復制或合并復制發布的表。
4、對于具有以上一個或多個特征的表,請使用 DELETE 語句。
5、TRUNCATE TABLE 不能激活觸發器,因為該操作不記錄各個行刪除。
四、TRUNCATE、Drop、Delete 區別
1.drop 和 delete 只是刪除表的數據(定義),drop 語句將刪除表的結構、被依賴的約束(constrain)、觸發器 (trigger)、索引(index); 依賴于該表的存儲過程 / 函數將保留, 但是變為 invalid 狀態。
2.delete 語句是 DML 語言, 這個操作會放在 rollback segement 中, 事物提交后才生效; 如果有相應的觸發器(trigger), 執行的時候將被觸發。truncate、drop 是 DDL 語言, 操作后即 生效, 原數據不會放到 rollback 中, 不能回滾, 操作不會觸發 trigger。
3.delete 語句不影響表所占用的 extent、高水線 (high watermark) 保持原位置不動。drop 語句將表所占用的空間全部釋放。truncate 語句缺省情況下將空間釋放到 minextents 的 extent, 除非使用 reuse storage。truncate 會將高水線復位(回到最初)。
4. 效率方面:drop truncate delete
5. 安全性: 小心使用 drop 與 truncate, 尤其是在 沒有備份的時候, 想刪除部分數據可使用 delete 需要帶上 where 子句, 回滾段要足夠大, 想刪除表可以用 drop, 想保留表只是想刪除表的所有數據、如果跟事物無關可以使用 truncate, 如果和事物有關、又或者想觸發 trigger, 還是用 delete, 如果是整理表內部的碎片,可以用 truncate 跟上 reuse stroage,再重新導入、插入數據。
6.delete 是 DML 語句, 不會自動提交。drop/truncate 都是 DDL 語句, 執行后會自動提交。
7、drop 一般用于刪除整體性數據 如表,模式,索引,視圖,完整性限制等;delete 用于刪除局部性數據 如表中的某一元組
8、DROP 把表結構都刪了;DELETE 只是把數據清掉
9、當你不再需要該表時,用 drop;當你仍要保留該表,但要刪除所有記錄時,用 truncate;當你要刪除部分記錄時(always with a WHERE clause), 用 delete.
關于如何在 SQL 中使用 Truncate 就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細節