数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中truncate与delete的区别


发布日期:2024年08月31日
 
Oracle中truncate与delete的区别

区别

在功能上truncate是清空一个表的内容它相当于delete from table_name

delete是dml操作truncate是ddl操作因此用delete删除整个表的数据时会产生大量的roolback占用很多的rollback segments 而truncate不会

在内存中用delete删除数据表空间中其被删除数据的表占用的空间还在便于以后的使用另外它是假相的删除相当于windows中用delete删除数据是把数据放到回收站中还可以恢复当然如果这个时候重新启动系统(OS或者RDBMS)它也就不能恢复了!

而用truncate清除数据内存中表空间中其被删除数据的表占用的空间会被立即释放相当于windows中用shift+delete删除数据不能够恢复!

truncate 调整high water mark 而delete不truncate之后TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以

truncate 只能对TABLEdelete 可以是tableviewsynonym

TRUNCATE TABLE 的对象必须是本模式下的或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的或被授予 DELETE ON SCHEMATABLE 或DELETE ANY TABLE的权限

在外层中truncate或者delete后其占用的空间都将释放

truncate和delete只删除数据而drop则删除整个表(结构和数据)

上一篇:教你怎样在Oracle数据库中高速导出/导入

下一篇:Oracle用户权限表的管理方法