oracle之truncate与delete语句

发布时间:2020-02-23编辑:脚本学堂
本文介绍下,oracle中删除表的语句truncate与delete,介绍下它们在使用时的注意事项、二者的相同点与区别,有需要的朋友参考下。

本节内容:
oracle的truncate、delete语句

一,在oracle中使用truncate与delete语句,需要注意:
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的权限。

四,oracle之truncate与delete语句的用法
1,truncate
用法:
truncate table T; 

2,delete
用法:
delete T 

重要区别:
delete在plsql中是可执行的,但是truncate在plsql中不能执行,只能用动态sql执行。

例如:
 

复制代码 代码示例:
execute immediate 'truncate table  表名';