標籤:oracle資料庫刪除資料的兩種方式
當表中的資料不需要是,則應該刪除該資料,並釋放所佔用的空間; 刪除表中的資料有delete和truncate兩種方式,下面分別介紹;
一、delete語句
(1)有條件刪除
文法格式:delete [from] table_name [where condition];
如:刪除users表中的userid為‘001’的資料:delete from users where userid=‘001‘;
(2)無條件刪除整個表資料
文法格式:delete table_name;
如:刪除user表中的所有資料:delete users ;
二、truncate語句
使用truncate是表示刪除表中所有的資料;
文法格式: Truncate [table] table_name;
(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;
三、兩種刪除語句的對比
由於delete語句刪除記錄時候,記錄是逐條刪除的,而Truncate 語句刪除資料時不產生回退資訊;所以如果需要刪除大量資料的時候使用delete則佔用較多的系統資源,而如果使用Truncate 則會快的多。
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。
但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和交易記錄資源少。
DELETE 語句每次刪除一行,並在交易記錄中為所刪除的每行記錄一項。
TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在交易記錄中記錄頁的釋放。
TRUNCATE,DELETE,DROP放在一起比較:
TRUNCATE TABLE:刪除內容、釋放空間但不刪除定義。
DELETE TABLE:刪除內容不刪除定義,不釋放空間。
DROP TABLE:刪除內容和定義,釋放空間。
oracle資料庫刪除資料的兩種方式