閱讀726 返回首頁    go 財經資訊


TRUNCATE TABLE__數據定義語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲

格式

TRUNCATE [TABLE] tblname;

該語句用於完全清空指定表,但是保留表結構,包括表中定義的Partition信息。從邏輯上說,該語句與用於刪除所有行的DELETE FROM語句相同。執行TRUNCATE語句,必須具有表的刪除和創建權限。它屬於DDL語句。

TRUNCATE TABLE語句與DELETE FROM語句有以下不同:

  • 刪減操作會取消並重新創建表,這比一行一行的刪除行要快很多。
  • TRUNCATE TABLE語句執行結果顯示影響行數始終顯示為0行。
  • 使用TRUNCATE TABLE語句,表管理程序不記得最後被使用的AUTO_INCREMENT值,但是會從頭開始計數。
  • TRUNCATE語句不能在進行事務處理和表鎖定的過程中進行,如果使用,將會報錯。
  • 隻要表定義文件是合法的,則可以使用TRUNCATE TABLE把表重新創建為一個空表,即使數據或索引文件已經被破壞。

示例

創建分區表:

Oceanbase>create table tp(a int, b int) partition by hash(a) partitions 7;
Query OK, 0 rows affected (0.37 sec)

Oceanbase>show create table tp;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                         |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tp    | CREATE TABLE `tp` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE partition by hash(a) partitions 7 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

插入若幹條數據:

Oceanbase>insert into tp values(1,2);
Query OK, 1 row affected (0.02 sec)

Oceanbase>insert into tp values(2,2);
Query OK, 1 row affected (0.04 sec)

Oceanbase>insert into tp values(3,2);
Query OK, 1 row affected (0.02 sec)

Oceanbase>insert into tp values(5,2);
Query OK, 1 row affected (0.01 sec)

Oceanbase>insert into tp values(6,2);
Query OK, 1 row affected (0.01 sec)


Oceanbase>select * from tp;
+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    2 |    2 |
|    3 |    2 |
|    5 |    2 |
|    6 |    2 |
+------+------+
5 rows in set (0.02 sec)

truncate 分區表:

Oceanbase>truncate tp;
Query OK, 0 rows affected (0.46 sec)

Oceanbase>select * from tp;
Empty set (0.04 sec)

Oceanbase>show create table tp;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                         |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tp    | CREATE TABLE `tp` (
  `a` int(11) DEFAULT NULL,
  `b` int(11) DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE partition by hash(a) partitions 7 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

最後更新:2016-11-24 11:23:47

  上一篇:go DROP TABLE__數據定義語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
  下一篇:go RENAME TABLE__數據定義語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲