[TOC] # 清空表 当表中的数据不再使用时,可以删除表中的所有行,即清空该表。 OceanBase 数据库支持使用`TRUNCATE TABLE`和`DELETE FROM`语句清空指定表,但是保留表结构,包括表中定义的 Partition 信息。从逻辑上说,`TRUNCATE TABLE`语句与用于删除所有行的`DELETE FROM`语句的执行结果相同。 ## 使用 TRUNCATE TABLE 语句 `TRUNCATE TABLE`语句提供了一种快速、有效删除表中所有行的方法,同时`TRUNCATE TABLE`语句是一个 DDL 语句,不会产生任何回滚信息。 执行`TRUNCATE TABLE`语句需要具备该表的删除和创建权限。 ~~~ obclient>TRUNCATE TABLE table_name; ~~~ ## 使用 DELETE FROM 语句 也可以使用`DELETE FROM`语句删除表中的行。 示例如下: ~~~ obclient>DELETE FROM table_name; ~~~ 使用`DELETE FROM`语句清空表时,如果表有很多行,会消耗较多系统资源。 ## TRUNCATE TABLE 语句与 DELETE FROM语句的差异 `TRUNCATE TABLE`语句与`DELETE FROM`语句的差异如下: * `TRUNCATE TABLE`操作会删除并重新创建表,比一行一行地删除行要快很多。 * `TRUNCATE TABLE`语句的执行结果显示影响行数始终为 0 行。 * 使用`TRUNCATE TABLE`语句时,表管理程序不会记录最后被使用的 AUTO\_INCREMENT 值,但是会从头开始计数。 * 不支持在进行事务处理和表锁定的过程中执行`TRUNCATE TABLE`操作。 * 只要表定义文件合法,就可以使用`TRUNCATE TABLE`语句将表重新创建为一个空表,即使数据或索引文件已经被破坏。