SQL 清空表(TRUNCATE TABLE 語句)

在本教程中,您將學(xué)習(xí)如何使用SQL快速刪除表中的所有行。

刪除表數(shù)據(jù)

TRUNCATE TABLE語句比DELET刪除表中的所有行更快。從邏輯上講,TRUNCATE TABLE它類似于DELETE沒有WHERE子句的語句。

TRUNCATE TABLE語句從表中刪除所有行,但表結(jié)構(gòu)及其列,約束,索引等保持不變。要?jiǎng)h除表及其數(shù)據(jù),可以使用該DROP TABLE語句,但是需謹(jǐn)慎操作。

語法

TRUNCATE TABLE的基本語法:

TRUNCATE TABLE table_name;

讓我們對數(shù)據(jù)庫表執(zhí)行清空操作。

考慮我們在數(shù)據(jù)庫中有一個(gè)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;

現(xiàn)在,在執(zhí)行上述SQL語句之后,如果嘗試從employee表中選擇記錄,則將獲得一個(gè)空結(jié)果集。

TRUNCATE TABLE vs DELETE

盡管DELETE和TRUNCATE TABLE似乎具有相同的效果,但是它們的工作方式不同。這是這兩個(gè)語句之間的一些主要區(qū)別:

  • TRUNCATE TABLE語句刪除并重新創(chuàng)建表,并使任何自動(dòng)增量值都重置為其初始值(通常為1)。

  • DELETE可讓您根據(jù)可選WHERE子句過濾要?jiǎng)h除的行,TRUNCATE TABLE而不支持WHERE子句則僅刪除所有行。

  • TRUNCATE TABLE與DELETE相比,它更快并且使用的系統(tǒng)資源更少,因?yàn)镈ELETE掃描表以生成受影響的行數(shù),然后逐行刪除行,并為每個(gè)刪除的行在數(shù)據(jù)庫日志中記錄一個(gè)條目,而TRUNCATE TABLE只刪除所有行而不提供任何其他信息。

提示:如果你只是想刪除所有的行,并重新創(chuàng)建整個(gè)表,使用TRUNCATE TABLE。如果你想刪除基于特定條件的行的數(shù)量有限,或者您不想要重置自動(dòng)遞增值,則使用DELETE。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清