Truncate,delete与drop区别

本文详细对比了SQL中truncate, delete与drop三个命令的区别与联系。从数据与表结构的处理方式、事务处理特性、对空间的影响及执行效率等方面进行了深入解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

truncate,delete与drop的异同点:

相同点:

三者均会删除表内的data。

不同点:

<1> truncate与不带where的delete: 只删除数据,而不删除表的结构(定义)

       drop将删除表的结构被依赖的约束(constrain),触发器(trigger), 索引(index);依赖于该表的存储过程/函数将被保留,但其状态   会变为:invalid。

<2>delete语句为DML(data maintain Lanaguage), 这个操作会被放到rollback segment中,事务提交后才生效。如果有相应的tigger,执行的时候将被触发。

       truncate,drop是DLL(data define language), 操作立即生效,原数据不放到rollback segment中,不能回滚;操作部触发tigger。

 <3>delete语句不影响所占用的extent,高水线(high watermark)保持原位置不动。

 drop语句将表所占用的空间全释放掉。

  truncate语句缺省情况下将空间释放到minextents个extent,除非使用reuse storage;truncate会将高水线(high watermark)复位(回到最初位置)

<4>速度:

一般而言,drop > truncate > delete。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值