當表中的數據不須要是,則應該刪除該數據,並釋放所佔用的空間; 刪除表中的數據有delete和truncate兩種方式,下面分別介紹;
1、delete語句ide
(1)有條件刪除spa
語法格式:delete [from] table_name [where condition];日誌
如:刪除users表中的userid爲‘001’的數據:delete from users where userid='001';orm
(2)無條件刪除整個表數據事務
語法格式:delete table_name;資源
如:刪除user表中的全部數據:delete users ;it
2、truncate語句 io
使用truncate是表示刪除表中全部的數據;table
語法格式: Truncate [table] table_name;class
(1)刪除全部記錄不保留記錄佔用空間
Truncate [table] table_name [drop storage];
如:刪除users表中的全部數據並不保存佔用空間: Truncate table users drop storage; 因爲默認使用drop storage關鍵字,因此能夠省略 drop storage;
(2)刪除全部記錄保留記錄佔用空間
Truncate [table] table_name [reuse storage];
如:刪除users表中的全部數據並保存佔用空間: Truncate table users reuse storage;
3、兩種刪除語句的對比
因爲delete語句刪除記錄時候,記錄是逐條刪除的,而Truncate 語句刪除數據時不產生回退信息;因此若是須要刪除大量數據的時候使用delete則佔用較多的系統資源,而若是使用Truncate 則會快的多。
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:兩者均刪除表中的所有行。
但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。
TRUNCATE TABLE 經過釋放存儲表數據所用的數據頁來刪除數據,而且只在事務日誌中記錄頁的釋放。
TRUNCATE,DELETE,DROP放在一塊兒比較:
TRUNCATE TABLE:刪除內容、釋放空間但不刪除定義。
DELETE TABLE:刪除內容不刪除定義,不釋放空間。
DROP TABLE:刪除內容和定義,釋放空間。