返回顶部
首页 > 资讯 > 数据库 >Truncate/Delete/Drop table的特点和区别
  • 878
分享到

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

2024-04-02 19:04:59 878人浏览 独家记忆
摘要

之前一直对Truncate/Delete/Drop认识的不是很清晰,所以特意的翻了一下Mysql5.7 Reference Manual,准备系统的了解一下,这里是一些翻译,外加一点自己的认知。T

之前一直对Truncate/Delete/Drop认识的不是很清晰,所以特意的翻了一下Mysql5.7 Reference Manual,准备系统的了解一下,这里是一些翻译,外加一点自己的认知。


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_increment的列,delete table之后可以无法重新使用序列值,但是重启之后可以重新使用序列;

Delete from table_name后面一定要跟where条件,否则会删除表的所有行;


Drop的特点

Drop table除了在数据库层面删除表,还会在系统层面删除xxx.ibd,xxx.frm(InnoDB表)或 xxx.MYD,xxx.MYI,xxx.frm (MyISAM)等文件;

drop table if exists table_name可以防止表不存在的报错,但是会有一个warning;

drop table也会隐式提交,除了临时表;


参考链接

https://dev.mysql.com/doc/refman/5.7/en/truncate-table.html

Https://dev.mysql.com/doc/refman/5.7/en/delete.html

https://dev.mysql.com/doc/refman/5.7/en/drop-table.html

您可能感兴趣的文档:

--结束END--

本文标题: Truncate/Delete/Drop table的特点和区别

本文链接: https://lsjlt.com/news/40011.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作