TRUNCATE TABLE

语法说明

TRUNCATE TABLE 语句用于用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。

TRUNCATE TABLE 有以下特点:

  • TRUNCATE TABLE 删除之后,不可恢复。

  • 如果表具有 AUTO_INCREMENT 列,则 TRUNCATE TABLE 语句将自动递增值重置为零。

  • 如果表具有任何外键约束(FOREIGN KEY),则 TRUNCATE TABLE 语句会逐个删除行。

  • 如果表没有任何外键约束(FOREIGN KEY),则 TRUNCATE TABLE 语句将删除该表并重新创建一个具有相同结构的新表

DROP TABLETRUNCATE TABLEDELETE TABLE 的区别:

  • DROP TABLE:当你不再需要该表时,用 DROP TABLE
  • TRUNCATE TABLE:当你仍要保留该表,但要删除所有记录时,用 TRUNCATE TABLE
  • DELETE TABLE:当你要删除部分记录时,用 DELETE TABLE

语法结构

  1. > TRUNCATE [TABLE] table_name;

语法释义

TABLE

TABLE 关键字是可选的。使用它来区分 TRUNCATE TABLE 语句和 TRUNCATE 函数。

示例

  1. create table index_table_05 (col1 bigint not null auto_increment,col2 varchar(25),col3 int,col4 varchar(50),primary key (col1),unique key col2(col2),key num_id(col4));
  2. insert into index_table_05(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
  3. mysql> select * from index_table_05;
  4. +------+-------+------+------+
  5. | col1 | col2 | col3 | col4 |
  6. +------+-------+------+------+
  7. | 1 | apple | 1 | 10 |
  8. | 2 | store | 2 | 11 |
  9. | 3 | bread | 3 | 12 |
  10. +------+-------+------+------+
  11. 3 rows in set (0.00 sec)
  12. mysql> truncate table index_table_05;
  13. Query OK, 0 rows affected (0.12 sec)
  14. mysql> select * from index_table_05;
  15. Empty set (0.03 sec)