drop、truncate和delete的区别

本文探讨了SQL中的truncate、delete和drop三种数据操作的区别,涉及内存空间利用、处理速度、语句类型和语法特性。重点讲解了它们在内存效率、事务处理和使用场景上的差异。

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

1.truncate

删除表中的内容,不删除表结构,释放空间;

2.delete

删除内容,不删除表结构,但不释放空间,只能作用于table

2.drop

drop语句将表所占用的空间全释放掉,可以作用于table和view

3.区别

  1. 内存空间

truncate删除数据后重新写数据会从1开始,而delete删除数据后只会从删除前的最后一行续写;内存空间上,truncate省空间

  1. 处理速度

因为,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快;

  1. 语句类型

delete属于DML语句,而truncate和drop都属于DDL语句,这造成了它们在事务中的不同现象:

delete在事务中,因为属于DML语句,所以可以进行回滚和提交操作(由操作者)
truncate和drop则属于DDL语句,在事务中,执行后会自动commit,所以不可以回滚;

  1. 语法

delete from 表名 (where…可写可不写,写的话进行选择性删除,不选清空表中数据)

truncate 表名(删除表中的数据,无法回滚的)
delete可以在后续加上where进行针对行的删除
truncate和drop后面只能加上表名,直接删除表,无法where

注意:并且drop和truncate不能够激活触发器,因为该操作不记录各行删除;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初夏0811

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值