1 Fork me on GitHub

42. SQL--truncate table:清空表

1. 前言

sql truncate table 语句用来删除表中的所有记录,也即清空表,它类似于不带 where 子句的 delete from 语句。

truncate table 和 drop table

drop table 用来删除表,包括删除该表的数据、结构、索引、触发器、约束等所有信息。一旦使用 drop table 删除了表,则该表的所有信息都将丢失,该表再也无法使用了。如果您希望存储一些数据,就只能重新创建该表。

truncate table 仅仅删除表的所有记录,表的结构、索引、触发器、约束等将被保留,后续仍然可以使用该表。

truncate table 和 delete from

不带 where 子句的 delete from 语句同样可以达到清空表的效果,但是 truncate table 使用的系统资源和日志资源更少,因此比 delete from 更加快速。

delete from 语句每删除一行,都会在事务日志中为所删除的行记录一项。truncate table 通过释放表中数据所用的数据页来删除数据,只会在事务日志中记录页的释放。

此外,truncate table 还能重置具有自动递增(auto_increment)属性的字段,而 delete from 却不具备该功能。

总结

  • 当您不再需要该表时,使用 drop table;
  • 当您仍要保留该表,只是想删除所有记录时,使用 truncate table;
  • 当你要删除部分记录时,使用带有 where 子句的 delete from。

2. 语法

truncate table 命令的基本语法如下:

truncate table  table_name;

table_name 为表名。

3. 示例

有包含如下记录的customers 表:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

使用 truncate table 命令清空数据表:

sql > truncate table customers;

现在 customers 表已被清空,使用 select 语句的输出结果如下:

sql> select * from customers;
empty set (0.00 sec)

 

posted @ 2022-09-02 14:07  v_jjling  阅读(614)  评论(0编辑  收藏  举报
AmazingCounters.com