TRUNCATE TABLE
Description
The TRUNCATE TABLE
statement deletes all rows in a table without logging individual row deletions. TRUNCATE TABLE
is similar to a DELETE
statement without a WHERE
clause; however, TRUNCATE TABLE
is faster and uses fewer system and transaction log resources.
TRUNCATE TABLE
has the following characteristics:
It cannot be restored after the
TRUNCATE TABLE
is deleted.If the table has an
AUTO_INCREMENT
column, theTRUNCATE TABLE
statement resets the auto-increment value to zero.The
TRUNCATE TABLE
statement deletes rows individually if the table hasFOREIGN KEY
constraints.If the table does not have any
FOREIGN KEY
constraints, theTRUNCATE TABLE
statement will drop the table and recreate a new one with the same structure
The difference between DROP TABLE
, TRUNCATE TABLE
, and DELETE TABLE
:
DROP TABLE
: UseDROP TABLE
when you no longer need the table.TRUNCATE TABLE
: UseTRUNCATE TABLE
to keep the table, but delete all records.DELETE TABLE
: When you want to delete some records, useDELETE TABLE
.
Syntax
> TRUNCATE [TABLE] table_name;
Explanations
TABLE
The TABLE keyword is optional. Use this to distinguish the TRUNCATE TABLE
statement from the TRUNCATE
function.
Examples
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)