1. 程式人生 > >Oracle 中delete truncate 及drop的區別

Oracle 中delete truncate 及drop的區別

Oracle 中刪除資料有三種方法:delete truncate drop
其中:delete 刪除資料表中記錄的語句,但是此語句並不能刪除表空間,它只能把被刪除的資料標記為unused。
用法: delete from 表名 where 條件,此過程可以回滾。
如果要刪除全部記錄,可以用truncate,它可以釋放佔用的資料塊表空間。
用法:truncate table 表名;此操作不能回退。
注:在過程中是不允許使用truncate語句的,如果要使用則應寫為(execute immediate ‘truncate table tablename’)。
此外還有drop,不同點是truncate、delete只是刪除資料而不刪除表結構,drop語句則刪除表結構的約束,索引,依賴該表的儲存過程/函式等變為invalid狀態。
Delete是DML,truncate和drop 都是ddl。過程塊是不能直接執行ddl語句的。

另想要對刪除的資料恢復,幾個函式也是有差別的。對於drop刪除的表可以用flash back 找回,而delete誤刪的資料用時間戳找回