设为首页 收藏本站
查看: 625|回复: 0

[经验分享] Oracle中的Truncate和Delete语句

[复制链接]

尚未签到

发表于 2016-8-11 07:28:26 | 显示全部楼层 |阅读模式
  首先讲一下,truncate命令:
语法:TRUNCATE  TABLE  table;
表格里的数据被清空,存储空间被释放。
运行后会自动提交,包括之前其它未提交的会话,因而一旦清空无法回退。
只有表格的创建者或者其他拥有删除任意表格权限的用户(如DBA)才能清空表格。
TRUNCATE  TABLE  dept30;
Table truncated.
------------------------------------------------------------------------------------------------------------
下面讲一下truncate命令和delete的区别:
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。 
3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。 
4、TRUNCATE不能触发任何DELETE触发器。 
5、不能授予任何人清空他人的表的权限。 
6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。 
7、不能清空父表。 TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE 在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE ST


DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。


===========================================================


TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。


--------------------------------------------------------------------------------------
以上只是介绍一下两个命令的用法,下面说一下我的推荐用法,truncate命令速度快,占用资源少,如果你能确定当前表里的数据完全没有用的话可以使用此命令,方面快捷,如果数据或许有用,那你最好做好备份,否则一旦使用此命令,就悔不当初了,当然delete命令还是有好处的,如果不能保证此后的数据有不有用,但是当前不知道,或者干脆就是误删了,那么使用rollback命令直接回滚,当然rollback命令可以添加回滚点,定位回滚,恢复数据比较方便,所以说对与初学者,楼主强烈建议大家删除数据时使用delete命令,麻烦事麻烦了点,但是保险一点,这是我的教训啊,误用truncate命令清空了一个表,还好这个表是无关紧要的,否则我就只有以谢天下了。当然,非常强烈的建议是,做任何操作前,对于有用的数据都要事先备份,不管用不用得着,有备无患。
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-256131-1-1.html 上篇帖子: oracle 插入语句奇怪性能问题 下篇帖子: oracle自动插入100w行记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表