SQL 删除表(DROP)SQL 删除数据(DELETE)

SQL 清空表(TRUNCATE TABLE 语句)

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

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

TRUNCATE TABLE语句从表中删除所有行,但表结构及其列,约束,索引等保持不变。要删除表及其数据,可以使用该DROP TABLE语句,但是需谨慎操作。

语法TRUNCATE TABLE的基本语法:

TRUNCATE TABLE table_name;让我们对数据库表执行清空操作。

考虑我们在数据库中有一个employee表,其中包含以下记录:

+--------+--------------+------------+--------+---------+

| 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语句之后,如果尝试从employee表中选择记录,则将获得一个空结果集。

TRUNCATE TABLE vs DELETE尽管DELETE和TRUNCATE TABLE似乎具有相同的效果,但是它们的工作方式不同。这是这两个语句之间的一些主要区别:

TRUNCATE TABLE语句删除并重新创建表,并使任何自动增量值都重置为其初始值(通常为1)。

DELETE可让您根据可选WHERE子句过滤要删除的行,TRUNCATE TABLE而不支持WHERE子句则仅删除所有行。

TRUNCATE TABLE与DELETE相比,它更快并且使用的系统资源更少,因为DELETE扫描表以生成受影响的行数,然后逐行删除行,并为每个删除的行在数据库日志中记录一个条目,而TRUNCATE TABLE只删除所有行而不提供任何其他信息。

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

SQL 删除表(DROP)SQL 删除数据(DELETE)