暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 中 truncate、delete、drop 的区别,你真的搞清楚了吗?

架构经纬 2024-08-18
109

在 MySQL 数据库操作中,truncate、delete 和 drop 是三个常常被用到但又容易让人混淆的命令。今天,咱们就来详细聊聊它们之间的区别。

一、delete 命令

delete 命令用于从表中删除行数据。它可以根据指定的条件删除部分行或者全部行。

特点:

  1. 可以指定删除的条件,灵活选择要删除的行。

  2. 是逐行删除数据,执行速度相对较慢。

  3. 会触发相关的删除触发器(如果有的话)。

  4. 删除操作是可以回滚的(在事务中),这意味着如果出现错误或者需要撤销删除操作,可以通过回滚恢复数据。

示例:

delete from users where age < 18; 

二、truncate 命令

truncate 命令用于快速删除表中的所有数据。

特点:

  1. 它会直接删除表中的所有数据,速度比 delete 快很多。

  2. 不会触发删除触发器。

  3. 不能指定删除条件,只能删除整个表的数据。

  4. 操作是不可回滚的,执行后数据无法恢复。

示例:

truncate table users;

三、drop 命令

drop 命令就比较“凶猛”了,它直接删除整个表,包括表的结构、数据、约束等所有相关的东西。

特点:

  1. 不仅删除表中的数据,还会删除表的结构和相关的约束、索引等。

  2. 操作不可回滚。

示例:

drop table users;

总结

delete 适合删除部分行数据,并且在某些情况下可以回滚;truncate 用于快速清空表数据,但不可回滚;drop 则直接将整个表都删除掉。

在实际应用中,一定要谨慎选择使用这三个命令,根据具体的需求来操作,避免误删重要的数据和表结构。



文章转载自架构经纬,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论