【oracle_sql】drop、truncat和edelete的区别

本文详细解析了SQL中drop、truncate和delete三种操作的区别,从内容和范围、空间占用、效率及语言特性等方面进行了全面比较,帮助读者理解如何在不同场景下选择最合适的SQL操作。

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

drop、truncat和edelete的区别

内容和范围:
drop           删除整个表(包括结构和数据)
truncate     只删除数据,只能对表操作并且只能删除整张表的数据,不可使用where条件;
                  且对于外键(foreignkey )约束引用的表,不能使用 truncate table
delete        只删除数据,可以删除table和view并且可以删除部分数据,因其可以使用where条件

空间:
drop           会将表所占用的空间释放
truncate     会表和索引所占用的空间会恢复到初始化大小
delete        不会减少表和索引的空间,高水线(high watermark)保持原位置不变(这就是为什么有时候一张没有数据的空表所占用的空间仍然很大的原因)

效率:
快到慢一般为drop > truncate > delete,delete因为需要写日志会比较慢

语言和回滚:
drop和truncate为DDL语句,会隐式自动提交,即操作立即生效,且原数据不放到rollback segment中,不能回滚,不会触发触发器
delete是DML语句,需要手动提交才会永久保存,原数据放到rollback segment中,可以回滚。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值