SQL TRUNCATE

删除表数据

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

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 对比 DELETE

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

  • TRUNCATE TABLE语句删除数据,自动递增值被重置为其初始值,通常为1。
  • DELETE允许根据可选的WHERE子句筛选要删除的行,而TRUNCATE TABLE不支持WHERE子句,它只删除所有行。
  • TRUNCATE TABLEDELETE速度更快,使用更少的系统资源。
提示: 如果想删除所有行并重新创建整个表,请使用TRUNCATE TABLE。如果希望根据特定条件删除有限数量的行,或者不希望重置自动递增值,请使用DELETE。


浙ICP备17015664号-1 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载