oracle中truncate和delete命令有何区别,Oracle中truncate和delete的区别

本文详细介绍了数据库中Truncate和Delete命令的区别,包括删除速度、是否可回滚、对表结构的影响、触发器以及权限管理等方面。Truncate操作速度快,不产生回滚信息,不触发删除触发器,且无法用于带有外键约束的表,而Delete操作则相反,适合需要回滚或触发特定操作的场景。此外,Truncate能释放表和索引的空间,而Delete则不会。
摘要由CSDN通过智能技术生成

truncate table命令将快速删除数据表中的任何记录,但保留数据表结构。这种快速删除和delete from 数据表的删除全部数据表记录不相同,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据能够回滚恢复,而truncate命令删除的数据是不能够恢复的。

truncate操作 同没有where条件的delete操作十分相似1、无论truncate大表还是小表速度都非常快。delete要产生回滚信息来满足回滚需求,而truncate是不产生的。2、truncate是DDL语句进行隐式提交,不能进行回滚操作3、truncate重新设定表和索引的HWM(高水标记),由于全表扫描和索引快速扫描都要读取所有的数据块知道HWM为止,所以全表扫描的性能不会因为delete而提高,但是经过truncate操作后速度会很快4、truncate不触发任何delete触发器5、不能赋给某个用户truncate其它用户表的权限。如果需要trucate其它用户表的权限必须对该用户赋DROP ANYTABLE权限6、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。7、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值