[sql table] TRUNCATE TABLE 语法

来源:互联网 发布:linux保存配置文件 编辑:程序博客网 时间:2024/06/05 18:59

清空表

语法:

TRUNCATE [TABLE] tbl_name

介绍:

TRUNCATE TABLE完全的清空一个表。这个操作需要DROP权限
逻辑上讲,TRUNCATE TABLE 和 DELETE语句的删除所有行相似,或者DROP TABLE 和 CREATE TABLE语句相似。为了实现高性能,它越过了DML方法的删除数据,所以他不可以回滚,他不触发ON DELETE触发器,当InnoDB型的表有额外的外键关系时,此语句不能工作。
尽管TRUNCATE TABLE与DELETE语句相同,他被分类为DDL语句而不是DML语句。他与DELETE有以下几点不同在MYSQL5.7:

  1. Truncate操作删除并重新创建一个表,所以他要比一个一个的删除行快,特别是很大的表
  2. Truncate操作造成一个隐式的提交,所以不可以回滚
  3. Truncate操作不能执行如果session持有活动表锁
  4. TRUNCATE TABLE会失败对于InnoDB或者NDB表 如果表中有任何外键限制引用此表
  5. Truncation操作不返回有意义的删除了多少行的值。通常返回的结果是“0 rows affected”,应当被解释为”没有信息”
  6. 只要表定义文件tbl_name.frm是合法的,则可以使用TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。
  7. 表管事程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。即使对于MyISAM和InnoDB也是如此。MyISAM和InnoDB通常不再次使用序列值
  8. 当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同是分区定义(.par)文件不受影响。
  9. TRUNCATE TABLE语句不会触发ON DELETE解发器

未完待续…

0 0
原创粉丝点击