SQL 基础教程
SQL 连接
SQL 高级教程
SQL 参考资料

SQL TRUNCATE TABLE 语句

在本教程中,您将学习如何使用 SQL 快速删除表中的所有行。

删除表数据

TRUNCATE TABLE 语句比 DELETE 更快地从表中删除所有行。 从逻辑上讲,TRUNCATE TABLE 类似于没有 WHERE 子句的 DELETE 语句。

TRUNCATE TABLE 语句从表中删除所有行,但表结构及其列、约束、索引等保持不变。 要删除表定义及其数据,可以使用 DROP TABLE 语句。

语法

TRUNCATE TABLE 的基本语法可以通过以下方式给出:

TRUNCATE TABLE table_name;

让我们对数据库表执行截断操作。

假设我们的数据库中有一个 employees 表,其中包含以下记录:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

以下命令从 employees 表中删除所有行:

TRUNCATE TABLE employees;

现在,在执行完上面的 SQL 语句后,如果你尝试从 employees 表中 选择记录,你会得到一个空的结果集。


TRUNCATE TABLE 与 DELETE

虽然 DELETETRUNCATE TABLE 似乎具有相同的效果,但它们的工作方式不同。 以下是这两种说法之间的一些主要区别:

  • TRUNCATE TABLE 语句删除并重新创建表,以将任何
    自动增量值重置为其起始值,通常为 1。
  • DELETE 允许您根据可选的 WHERE 子句过滤要删除的行,而 TRUNCATE TABLE 不支持 WHERE 子句,它只是删除所有 行。
  • TRUNCATE TABLEDELETE 更快并且使用更少的系统资源,因为 DELETE 扫描表以生成受影响的行数,然后逐一删除行并在数据库日志中为每个删除的行记录一个条目,而 TRUNCATE TABLE 只是删除所有行而不提供任何附加信息。

提示:如果您只想删除所有行并重新创建整个表,请使用 TRUNCATE TABLE。 如果您想根据特定条件删除有限数量的行,或者您不想重置自动增量值,请使用 DELETE

Advertisements