MySQL数据库中的delete和truncate的区别

本文对比了数据库操作中Delete与Truncate两种方法的异同。Delete逐条删除记录且支持事务回滚,而Truncate则彻底清空并重建表结构,无法恢复数据。

主要从相同点和不同点两方面来认识:

1.相同点:两者都是的功能都是删除数据库中的表。

2.不同点:(1).delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。

   (2).truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

备注:

1.delete的案例演示如图“delete演示截图”;

    


  2.truncate的案例演示图“truncate演示截图”。

     




MySQL数据库操作中,DELETE、DROPTRUNCATE是三个常用的数据删除命令,它们的区别如下: ### 功能差异 - DELETE:用于删除中的特定行数据,可以指定条件删除,语法为 `DELETE FROM 名 [WHERE 条件]`。例如,`DELETE FROM users WHERE age > 30;` 会删除 `users` 中年龄大于30的所有行 [^2]。 - TRUNCATE:仅删除中的所有数据,语法为 `TRUNCATE TABLE 名`。例如,`TRUNCATE TABLE orders;` 会删除 `orders` 中的所有数据,但保留结构 [^2]。 - DROP:删除及其所有数据,同时也会删除被依赖的约束、触发器、索引等,语法为 `DROP TABLE 名`。例如,`DROP TABLE products;` 会彻底删除 `products` [^2][^4]。 ### 删除索引所占空间的区别 - DELETE操作不会减少或索引所占用的空间。因为DELETE只是标记要删除的行,的物理空间不会被释放 [^4]。 - 当TRUNCATE后,这个索引所占用的空间会恢复到初始大小 [^4]。 - DROP语句将所占用的空间全释放掉 [^4]。 ### 删除速度 删除速度方面,DROP > TRUNCATE > DELETE。DROP直接移除整个结构,TRUNCATE删除数据,而DELETE逐行删除数据,所以速度相对较慢 [^4]。 ### 应用范围 - DELETE可以用于视图,只删除数据,不删除的结构 [^4]。 - TRUNCATE只能对操作,只删除数据,不删除的结构 [^4]。 - DROP用于删除整个(结构数据),同时也会删除被依赖的约束、触发器、索引等,但是依赖于该的存储过程/函数将被保留,但其状态会变为invalid [^4]。 ### 语句类型 - DELETE语句为DML(Data Manipulation Language),这个操作会被放到rollback segment中,事务提交后才生效,如果有相应的trigger,执行的时候将被触发,可以通过rollback撤消操作。例如: ```sql START TRANSACTION; DELETE FROM users WHERE id = 1; -- 若想撤销操作 ROLLBACK; ``` - TRUNCATE、DROP是DDL(Data Definition Language),操作立即生效,原数据不放到rollback segment中,不能回滚 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值