本节内容:
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执行。
例如: