清空表
语法:
TRUNCATE [TABLE] tbl_name
- 1
介绍:
TRUNCATE TABLE完全的清空一个表。这个操作需要DROP权限
逻辑上讲,TRUNCATE TABLE 和 DELETE语句的删除所有行相似,或者DROP TABLE 和 CREATE TABLE语句相似。为了实现高性能,它越过了DML方法的删除数据,所以他不可以回滚,他不触发ON DELETE触发器,当InnoDB型的表有额外的外键关系时,此语句不能工作。
尽管TRUNCATE TABLE与DELETE语句相同,他被分类为DDL语句而不是DML语句。他与DELETE有以下几点不同在MYSQL5.7:
- Truncate操作删除并重新创建一个表,所以他要比一个一个的删除行快,特别是很大的表
- Truncate操作造成一个隐式的提交,所以不可以回滚
- Truncate操作不能执行如果session持有活动表锁
- TRUNCATE TABLE会失败对于InnoDB或者NDB表 如果表中有任何外键限制引用此表
- Truncation操作不返回有意义的删除了多少行的值。通常返回的结果是“0 rows affected”,应当被解释为”没有信息”
- 只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。
- 表管事程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。即使对于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值
- 当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同是分区定义(.par)文件不受影响。
- TRUNCATE TABLE语句不会触发ON DELETE解发器
转载于https://blog.csdn.net/weixin_36210698/article/details/70176652