Oracle刪除語句drop、delete、truncate的差別 ...
1,刪除表 drop
-
1.1 執行drop table table_name 語句
被 drop後的表被放在用戶回收站(user_recyclebin)里,而沒有被直接刪除掉,回收站里的表可以被恢復。 通過查詢回收站user_recyclebin獲取被刪除的表信息,然後使用語句如下語句:
flashback table user_recyclebin.object_name [user_recyclebin.original_name] to before drop [rename to new_table_name];
將回收站里的表恢復為原名稱或指定新名稱。
-
1.2 若要徹底刪除表,則使用語句:drop table table_name purge;
該語句表示:不放入回收站,直接刪除。
-
1.3 drop含有外鍵的表
drop table table_name cascade constraints;
---也稱為稱為級聯刪除 ,何相關視圖和完整性約束一併被刪除。
2,刪除表中的數據
-
2.1 delete
delete 操作適用於刪除表中的部分數據,而不是全部的數據。如果使用delete刪除表中的所有行,表中的數據雖然被刪除,單是高水位線並不會被釋放。
-
2.2 truncate操作是把表裡的信息全部刪除,並將高水位線置為0,同時截除表上的相關索引。
truncate table table_name;
Truncate不支持回滾,不能truncate一個帶有外鍵的表,如果要刪除首先要取消外鍵,然後再刪除。
truncate table 後,有可能表空間仍沒有釋放。
可以使用如下語句釋放:
alter table table_name deallocate UNUSED KEEP 0;
alter table emp deallocate UNUSED KEEP 0;
或者在清除數據時,一併回收存儲空間:
TRUNCATE TABLE table_name DROP(REUSE) STORAGE;
例如: truncate table test1 DROP STORAGE;
註明:本博文系總結多個博文和Oracle專業文檔,並經過本人驗證總結而成,如有侵權請聯繫本人加以註明。