ORACLE DELETE & TRUNCATE 区别

本文对比了SQL中delete与truncate两条指令的用法与区别,包括它们的功能、执行效率及安全性考量。delete适用于表和视图,支持条件删除且可回滚;truncate仅用于表,删除所有数据且不可恢复。

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

用法:

delete from tablename;

truncate table tablename;

两者相同点:

delete、truncate都能起到清除表数据功能;

两者不同点:

delete语句用于表、视图等;delete可以指定单条数据删除;delete属于DML操纵语言;

truncate只能用于表;truncate删除整表数据;truncate属于DDL定义语言;

也就是说delete删除之后数据可以在回滚,使用rollback;而truncate删除之后数据时不可恢复的。

执行效率:

truncate语句删除效率远高于delete语句。

两者执行原理:

delete:删除一条数据之前首先copy这条数据到撤销段,删除几百几千万条都先要copy到撤销段,有人就问了,删除之前为什么都要copy到撤销段里面,别忘了,delete删除之后还可以再使用rollback恢复的,恢复的数据就要根据日志文件到撤销段里找到再回复。中间多一种copy操作,增加额外的一种安全保证,损失点效率是肯定的;

truncate语句直接进行删除,无须copy到撤销段,效率的提升是显著的,但带来的风险也是存在的,如误删除了数据,该删除数据是不可恢复的因为他是DDL,后台隐式提交事务。用时需谨慎。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值