Skip to content

清空表

语法格式

sql
truncatestmt::=
    TRUNCATE [ TABLE ] sche_name.table_name [NOWAIT | WAIT | WAIT ICONST]

参数说明

  • schema_name:模式名。
  • table_name:表名。

说明:

  • TRUNCATE是将表中所有的记录全部清除,而DELETE语句带上条件后是选择性地清除记录。如果不带条件类似于TRUNCATE,如DELETE FROM student;删除整张表。
  • TRUNCATE操作可收回数据存储空间用于系统复用,而DELETE只是在行级上标示该记录被删除,不会回收数据存储空间。

示例

MySQL兼容模式下,TRUNCATE表后,该表的自增字段重置为1。

sql
-- 设置兼容模式为MySQL
SET compatible_mode TO 'MYSQL';

-- 创建表,并插入数据
CREATE TABLE customers(id int IDENTITY, tel VARCHAR(11));

INSERT INTO customers(tel) values('cdscdsc');

SELECT * FROM customers c ;
ID|TEL    |
--+-------+
 1|cdscdsc|
 
-- 清空表
TRUNCATE table customers ; 

-- 再次插入数据,并查询可以看到id字段是重置为1开始
INSERT INTO customers(tel) values('cdscdsc');
INSERT INTO customers(tel) values('cdscdsc');

SELECT * FROM customers c ;
ID|TEL    |
--+-------+
 1|cdscdsc|
 2|cdscdsc|