在 SQL 中,TRUNCATE TABLE 命令用于快速删除表中的所有行,并释放表所占用的存储空间,同时保留表的结构。相对于 DELETE 命令,TRUNCATE TABLE 是一种更为高效的方法,因为它不会逐行删除记录,而是一次性地截断整个表。

语法:
TRUNCATE TABLE table_name;

其中,table_name 是要截断(清空)的表的名称。

示例:

假设有一个表 employees:
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    employee_name VARCHAR(255),
    department_id INT
);

INSERT INTO employees (employee_id, employee_name, department_id)
VALUES (1, 'John', 101),
       (2, 'Alice', 102),
       (3, 'Bob', 101);

如果要清空该表,保留表结构,可以使用 TRUNCATE TABLE:
TRUNCATE TABLE employees;

这将删除表中的所有行,但保留表结构和列定义。

注意事项:

1. TRUNCATE TABLE 是一个 DDL(数据定义语言)命令,因此在执行时会自动提交事务。不同于 DELETE 命令,它不会生成事务日志,因此在一些数据库系统中执行速度更快。

2. 由于 TRUNCATE TABLE 是一次性操作,不会触发 DELETE 触发器。如果需要触发触发器,可能需要使用 DELETE 命令。

3. TRUNCATE TABLE 不支持带有 WHERE 子句的条件,它总是删除整个表中的所有行。

在一些情况下,特别是在清理大型表时,使用 TRUNCATE TABLE 可以更加高效。然而,需要注意的是,由于其特性,它并不适用于所有场景,特别是在需要满足复杂条件的删除操作时。


转载请注明出处:http://www.zyzy.cn/article/detail/3355/SQL