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 TABLE
、TRUNCATE TABLE
和 DELETE TABLE
的区别:
DROP TABLE
:当你不再需要该表时,用DROP TABLE
。TRUNCATE TABLE
:当你要删除所有记录,但仍要保留该表时,用TRUNCATE TABLE
。DELETE TABLE
:当你要删除部分记录时,用DELETE TABLE
。
语法结构
> TRUNCATE [TABLE] table_name;
语法释义
TABLE
TABLE 关键字是可选的。使用它来区分 TRUNCATE TABLE
语句和 TRUNCATE
函数。
示例
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));
insert into index_table_05(col2,col3,col4) values ('apple',1,'10'),('store',2,'11'),('bread',3,'12');
mysql> select * from index_table_05;
+------+-------+------+------+
| col1 | col2 | col3 | col4 |
+------+-------+------+------+
| 1 | apple | 1 | 10 |
| 2 | store | 2 | 11 |
| 3 | bread | 3 | 12 |
+------+-------+------+------+
3 rows in set (0.00 sec)
mysql> truncate table index_table_05;
Query OK, 0 rows affected (0.12 sec)
mysql> select * from index_table_05;
Empty set (0.03 sec)