阅读726 返回首页    go 阿里云 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-阿里云