1. delete/truncate 只刪除資料不刪除表,索引的結構。 drop 將刪除表的結構及依賴的 index/constrain/trigger,依賴於該表的 procedure/function 將保留,但是變為 invalid 狀態;
2. delete 是 dml,寫 rollback segement,可復原,速度慢,事務提交之後才生效。在 9i 滿足 undo_retention 條件下可使用 flashback。一次性大批量資料的 delete 可能導致復原段急劇擴充從而影響到資料庫,慎用,觸發 trigger。 truncate/drop 是 ddl,隱式提交,不寫 rollback segment,不能復原,速度快。9i 不能使用 flashback,不觸發 trigger;
3. delete 不影響表所佔用的 extent,HWM 保持原位置不動,即使刪除的是最靠近 HWM 的資料。delete 其實也可以釋放空間,但是不降低 HWM,delete 後 block 的空閑空間達到 pct_used,就可以重用。 truncate 預設情況下將空間(表和索引)釋放到 minextents 個 extent,除非使用 reuse storage。truncate 會將高水線複位(回到最開始)。 drop 將表所佔用的空間全部釋放,segment 不存在,無所謂 HWM 的概念;
Oracle 高水位(HWM)
http://blog.csdn.net/tianlesoftware/archive/2009/10/22/4707900.aspx
4. truncate/drop 的對象必須是本模式下的,或者被授予 drop any table 的許可權,但 drop any table 許可權不能 truncate/drop sys 的表。 delete 的對象必須是本模式下的,或者被授予 delete on SCHEMA.table 或 delete any table 的許可權,但 delete any table 許可權不能 delete sys 的表;
5. 不能 truncate 一個帶有 enable 外鍵的表,不管表裡有沒有資料,如果要 truncate,首先要 disable 外鍵或者刪除外鍵(drop 外鍵的表肯定是刪除了外鍵)。不能 drop 一個帶有 enable 外鍵的表,不管表裡有沒有資料,如果要 drop,首先要刪除外鍵,或者直接用 drop table TABLE_NAME cascade constraints; 串聯刪除外鍵。 delete 可以。
轉載自網路
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
網上資源: http://tianlesoftware.download.csdn.net
相關視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977