
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 截斷表
SQL 提供命令來完全截斷表,一次性完成,而不是逐條刪除表記錄,這將是一個非常耗時且繁瑣的過程。
SQL TRUNCATE TABLE 語句
SQL 的 TRUNCATE TABLE 命令用於清空表。此命令是 DROP TABLE 和 CREATE TABLE 語句的序列,需要 DROP 許可權。
您還可以使用 DROP TABLE 命令來 刪除表,但它會從資料庫中刪除完整的表結構,如果您希望再次儲存一些資料,則需要重新建立此表。
語法
TRUNCATE TABLE 命令的基本語法如下所示。
TRUNCATE TABLE table_name;
示例
首先,讓我們建立一個名為 CUSTOMERS 的表,該表可以儲存客戶的個人詳細資訊,包括他們的姓名、年齡、地址和薪水等,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在使用 INSERT 語句將值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (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, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
表將建立如下:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
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 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
以下 SQL TRUNCATE TABLE CUSTOMER 語句將刪除 CUSTOMERS 表的所有記錄:
TRUNCATE TABLE CUSTOMERS;
驗證
現在,CUSTOMERS 表已被截斷,SELECT 語句的輸出將如以下程式碼塊所示:
SELECT * FROM CUSTOMERS;
輸出如下:
Empty set (0.00 sec)
TRUNCATE vs DELETE
儘管 TRUNCATE 和 DELETE 命令在邏輯上工作方式相似,但它們之間存在一些主要差異。它們在下面的表格中詳細說明。
DELETE | TRUNCATE |
---|---|
SQL 中的 DELETE 命令 根據 WHERE 子句中指定的條件刪除表中的一行或多行。 |
SQL 的 TRUNCATE 命令用於刪除表中的所有行,無論是否滿足任何條件。 |
它是 DML(資料操縱語言)命令。 |
它是 DDL(資料定義語言)命令。 |
在對 DELETE 命令進行更改後,需要手動提交才能提交修改。 |
使用 TRUNCATE 命令時,對錶的修改會自動提交。 |
它一次刪除一行,並對每次刪除應用相同的標準。 |
它一次刪除所有資訊。 |
WHERE 子句在這種情況下充當條件。 |
WHERE 子句不可用。 |
刪除後所有行都被鎖定。 |
TRUNCATE 使用表鎖,鎖定頁面以防止刪除。 |
它在日誌檔案中記錄每個事務。 |
僅記錄儲存資料的頁面的釋放。 |
與 TRUNCATE 命令相比,它消耗更多的事務空間。 |
它佔用的事務空間相對較少。 |
如果存在標識列,則表標識不會重置為表建立時的值。 |
它將表標識返回到作為種子給定的值。 |
它需要刪除授權。 |
它需要表更改許可權。 |
對於大型資料庫,它要慢得多。 |
它快得多。 |
TRUNCATE vs DROP
與重置表結構的 TRUNCATE 不同,DROP 命令 完全釋放記憶體中的表空間。它們都是資料定義語言 (DDL) 操作,因為它們與資料庫物件的定義互動;這允許資料庫在執行這些命令後自動提交,並且沒有回滾的機會。
但是,這兩個命令之間仍然存在一些差異,這些差異已在以下表格中總結:
DROP | TRUNCATE |
---|---|
SQL 中的 DROP 命令從資料庫中刪除整個表,包括其定義、索引、約束、資料等。 |
TRUNCATE 命令用於刪除表中的所有行,無論是否滿足任何條件,並重置表定義。 |
它是 DDL(資料定義語言)命令。 |
它也是 DDL(資料定義語言)命令。 |
表空間完全從記憶體中釋放。 |
表仍然存在於記憶體中。 |
所有完整性約束都被刪除。 |
完整性約束仍然存在於表中。 |
分別需要表架構和表的 ALTER 和 CONTROL 許可權才能執行此命令。 |
只需要 ALTER 許可權即可截斷表。 |
DROP 命令比 TRUNCATE 慢得多,但比 DELETE 快。 |
TRUNCATE 命令比 DROP 和 DELETE 命令都快。 |