来源:http://superman-chenzs.itpub.net/post/29327/272469
1、在功能上,truncate是清空一个表的内容,它相当于delete from table_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的roolback,占用很多的rollback segments, 而truncate不会。
3、在内存中,用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是“假相”的删除,相当于windows中用delete删除数据是把数据放到回收站中,还可以恢复,当然如果这个时候重新启动系统(OS或者RDBMS),它也就不能恢复了!
而用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不能够恢复!
4、truncate 调整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以。
5、truncate 只能对TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限。
7、在外层中,truncate或者delete后,其占用的空间都将释放。
8、truncate和delete只删除数据,而drop则删除整个表(结构和数据)。
分享到:
相关推荐
SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完
delete,truncate和drop的区别
oracle数据库删除数据Delete语句和Truncate语句的对比.docx
详细阐述了Oracle中三种删除的方式truncate,drop和delete三者的区别和联系.
oracle当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍
利用oracle 系统触发器防止用户使用drop table 或truncate table 命令。
。
1.delete不能使自动编号返回为起始值。... 您可能感兴趣的文章:Oracle给用户授权truncatetable的实现方案SQL中Truncate的用法golang实战之truncate日志文件详解tf.truncated_normal与tf.random_normal
在解决问题之前,首先需要使用 delete 语句删除大量数据,然后使用 truncate table 语句清空表空间。接着,使用 analyze table 语句重新分析表的统计信息,以便提高查询效率。 analyze 语句的作用是收集表的统计...
开发说在用dwetl下执行调用shop用户下的表的时候提示没有权限操作,google了查了下,发现oracle账户没法直接赋予对某个表的truncate权限,那要怎么来实现呢? 在shop用户下面,准备测试数据 SQL> create table Z_...
因此,在由于各种原因引起的数据库不能打开或者数据库中的表被DROP,TRUNCATE,DELETE后,而且没有备份的情况下,使用Dbseeker能够及时找回数据表记录。 最新版本请访问http://www.dbseeker.com 2015/12/05 Dbseeker...
因此,在由于各种原因引起的数据库不能打开或者数据库中的表被DROP,TRUNCATE,DELETE后,而且没有备份的情况下,使用Dbseeker能够及时找回数据表记录。最新版本请访问作者网站http://www.dbseeker.com
Oracle_Undo与Redo的通俗 Oracle中的Undo和Redo是两个非常重要的概念,它们都是Oracle数据库中事务管理和恢复机制的关键组件。Undo和Redo都是为了确保数据库的一致性和可靠性。 什么是REDO? REDO记录transaction...
区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间. 8. 使用索引的理由 解答:快速访问表中的data block 9. 给出在STAR ...
使用Truncate替代delete来删除记录,但Truncate数据不记录日志,无法进行回滚 对于复杂的存储过程可以多次提交的数据的要多分多次Commit,否则长事务对系统性能影响很大 Distinct和Having子句都是耗时操作,...
3. 当一个会话结束(用户正常退出、用户不正常退出、Oracle 实例崩溃)或者一个事务结束的时候,Oracle 对这个会话的表执行 TRUNCATE 语句清空临时表数据。但不会清空其它会话临时表中的数据。 4. 你可以索引临时表...
6. 比较 truncate 和 delete 命令有什么区别? 答:两者都可以用来删除表中所有的记录。区别在于:truncate 是 DDL(数据定义语言),它移动 HWK,不需要 rollback segment(处理事务回滚操作);delete 是 DML...
7. 比较truncate和delete 命令 8. 使用索引的理由 9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据 10. FACT Table上需要建立何种索引? 11. 给出两种相关约束? 12. 如何在不影响子表的前提下,重建一个母...