delete和truncate的区别

本文详细解析了SQL中的DELETE和TRUNCATE两种删除表数据的方法,包括它们的功能、性能、回滚能力及空间管理的区别。重点强调了在实际应用中如何合理选择这两种操作,以确保数据安全性和效率。

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

delete和truncate都是对表的数据进行操作,delete是对表中的一条或多条数据进行操作,而truncate是对表中的所有数据记录进行操作,一般我们用delete叫做删除表,用truncate叫做截断表。

1、delete

不能回滚、空间不能回收、工作效率低

2、truncate

能回滚、空间能回收、工作效率高

回滚:

意思像是“你做了一件后悔的事情,可以回到犯错以前”,在oracle中数据是放到undo空间中,delete是DDL语句,truncate是DML语句,而DDL能访问undo空间,truncate不能访问undo空间,所以delete能回滚。

空间:

oracle每次添加记录的时候都会为记录分配空间,使用delete删除,数据会被删除,但是空间还在占用着没有被回收。truncate就不一样,他是直接截取删除整表的记录从而把空间释放,这样内存占用量就少。在公司中往往不用删除命令,尽量少用至不用,因为在公司中数据是很重要的,很可能一不小心就把重要的文件删除,这样会对公司造成巨大的影响,一般公司采用将没有用的数据标记,不会选择删除,利用内存空间换取数据的安全性。

效率:

delete删除的时候是一条一条的语句删除,truncate是直接截取并删除,好比让你扔掉两本书,你是一页一页的撕掉扔进垃圾桶,或者是将两本书直接扔进垃圾桶;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值