删除表数据
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 对比 DELETE
虽然DELETE
和TRUNCATE
表似乎具有相同的效果,但它们的工作方式不同。以下是这两种语句的一些主要区别:
TRUNCATE TABLE
语句删除数据,自动递增值被重置为其初始值,通常为1。DELETE
允许根据可选的WHERE
子句筛选要删除的行,而TRUNCATE TABLE
不支持WHERE子句,它只删除所有行。TRUNCATE TABLE
比DELETE
速度更快,使用更少的系统资源。