truncate與delete drop的區別

2021-09-09 04:28:58 字數 1405 閱讀 5183

注意事項

1.在oracle中資料刪除後還能回滾是因為它把原始資料放到了undo表空間。

2.dml語句使用undo表空間,ddl語句不使用undo,  而delete是dml語句,truncate是ddl語句,另外ddl語句是隱式提交.所以truncate操用不能回滾,而delete操作可以。

truncate與delete相同點:

1 在oracle中刪除表中的資料的方法有delete,truncate

2 它們都是刪除表中的資料,而不能刪除表結構.

truncate與delete之間的區別

1: delete 可刪除整個表的資料也可刪除表中某一條或n條滿足條件的資料,刪除的資料可恢復.命令完成就可回滾.

2: truncate只能刪除整個表的資料,自動提交.命令完成不可回滾.truncate的速度也比delete要快得多,truncate之後,table的hwm退回到 initial和next的位置(預設)delete 則不可以.

3: truncate 只能對table,delete 可以是table,view,synonym

4: truncate table 的物件必須是本模式下的,或者有drop any table的許可權 而 delete 則是物件必須是本模式下的,或被授予 delete on schema.table 或delete any table的許可權.

一 :truncate

語法:

truncate table table_name; 

二 :delete

語法:

delete table_name;或者delete from table;

三:重要區別

delete在plsql中是可執行的,但是truncate在plsql中不能執行,只能用動態sql執行,如下:

sql** 

execute immediate 'truncate table  表名'; 

注意最後一點,前面因為不知道truncate是ddl語言,在plsql中用法,結果寫過程時。

報錯:create or replace procedure procename  as

begin

truncate  table table_name;

end procename;

可編譯:

create or replace procedure procename  as

begin

execute immediate 'truncate  table table_name;

end procename;

truncate與delete的區別

truncate與delete的區別 truncate table命令將快速刪除資料表中的所有記錄,但保留資料表結構。這種快速刪除與delete from 資料表的刪除全部資料表記錄不一樣,delete命令刪除的資料將儲存在系統回滾段中,需要的時候,資料可以回滾恢復,而truncate命令刪除的資料...

Delete與Truncate以及Drop的區別

相同點 truncate和不帶where子句的delete,以及drop都會刪除表內的資料 不同點 1.truncate和 delete只刪除資料不刪除表的結構 定義 drop語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的儲存過程 函式將保...

Truncate與Delete的區別

truncate table 在功能上與不帶 where 子句的 delete 語句相同 二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。truncate tabl...