Truncate/Delete/Drop table的特点和区别

本文介绍了数据库中Truncate、Delete和Drop的区别和特点。Truncate是DDL操作,用于快速删除表数据,不触发回滚且影响表的高水位线;Delete是DML操作,可回滚,适合有条件删除数据;Drop是彻底删除表结构和数据,不可逆。执行速度上,Drop最快,其次是Truncate,Delete最慢。在涉及回滚、外键约束和触发器时,需谨慎选择这些操作。
摘要由CSDN通过智能技术生成

言简意赅的说一下

  1. delete 和 truncate 仅仅删除表数据,truncate会改变表的高水位线,drop 连表数据和表结构一起删除
  2. delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚
  3. 执行的速度上,drop>truncate>delete

Truncate的特点

  • 逻辑上truncate table和delete from table_name;相似,但是过程是先drop table,然后在re-create table,如果要清空一个大表的所有数据行,truncate比delete高效;

  • Truncate是一个DDL操作,一旦执行会隐式提交,这就说明truncate无法rollback,所以执行之前需谨慎;

  • 如果表被锁住,truncate会报错;

  • 如果有外键约束,truncate也会报错;

  • 对于InnoDB/MyISAM表的auto_increment的列,truncate table之后可以重新使用序列值;

  • truncate table无法触发delete相关的触发器;

 

Delete的特点

Delete是DML操作,如果没有提交,可以rollback;

对于InnoDB/MyISAM表的auto_incr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值