delete table 和 truncate table - 型別安全的心 - 部落格園

weixin_33785972發表於2017-12-05

delete

使用delete語句刪除資料的一般語法格式:

delete [from]
{table_name、view_name}
[where]

將XS表中的所有行資料刪除

delete XS

執行完後,發現XS表中的資料都刪除了,但是表的結構什麼都還在。

truncate

truncate table語句將刪除指定表中所有資料,因此也稱其為清除表資料語句,一般格式如下

truncate table name

由於truncate語句將刪除表中的所有資料,且無法恢復,因此使用時必須十分小心。
使用truncate table刪除了指定表中的所有行,但表的結構及其列,約束,索引等保持不變,而新行標識所用的計數值重置為該列的初始值。如果想保留標識計數值,則要使用DELETE語句。

TRUNCATE TABLE執行速度比DELETE塊,且使用的系統和事務日誌資源少。DELETE語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。而TRUNCATE TABLE通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。

對於有外來鍵約束引用的表,不能使用TRUNCATE TABLE刪除資料,而應該使用布袋WHERE子句的DELETE語句。另外TRUNCATE TABLE也不能用於參與了索引檢視的表。

相關文章