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是DML操作,如果没有提交,可以rollback;
- 对于InnoDB/MyISAM表的auto_increment的列,delete table之后可以无法重新使用序列值,但是重启之后可以重新使用序列;
- Delete from table_name后面一定要跟where条件,否则会删除表的所有行;
- 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/delete.html
https://dev.mysql.com/doc/refman/5.7/en/drop-table.html
【【MySQL】truncate、delete、drop的区别】原文链接:https://blog.51cto.com/darrenmemos/2288350
推荐阅读
- mysql|InnoDB数据页结构
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- vue|电商后台管理系统(vue+python|node.js)
- Java及基础算法及数据结构|旧笔记整理(MySQL)
- mysql|双非本211硕,无实习无项目,自学大数据开发,秋招上岸
- 数据库|Mysql--InnoDB存储引擎详解
- MySQL学习笔记-9-order by