Mysql的drop、delete与truncate的区别

1.drop

drop和delete、truncate这两个命令只删除表的行数据不同,drop 会把整张表的行数据和表结构一起删除掉

DROP TABLE tbl_name

2.detele

在 InnoDB 引擎中,delete 操作并不是真的把数据删除掉了,而是给数据打上删除标记,标记为删除状态,使用了 delete 删除所有的数据之后,并不会重置自增列为初始值
可用于删除表的部分或所有数据,它的使用语法如下:

delete from table_name [where...] [order by...] [limit...]
[] 中的命令为可选命令,可以被省略。

3.truncate

truncate 执行效果和 delete 类似,也是用来删除表中的所有行数据的,truncate 在使用上和 delete 最大的区别是,delete 可以使用条件表达式删除部分数据,而 truncate 不能加条件表达式,所以它只能删除所有的行数据

truncate [table] table_name

truncate 在 InnoDB 引擎中会重置自增列

4.三者的区别

  1. 数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。
  2. 执行速度方面:drop > truncate > delete。
  3. 删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。
  4. 添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。
  5. 重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列。
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
二惠的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容