OceanBase 数据库中的 MySQL 模式下清空某张表包含 DELETE 和 TRUNCATE 两种方式。
前提条件
当前用户需要对表具有 DELETE 权限。
DELETE 方式
描述
该语句用来删除表中符合条件的行,包括单表删除及多表删除两种方式。
语法
Single-Table-Delete Syntax:
DELETE [hint_options] FROM tbl_name
[PARTITION (partition_name,...)]
[WHERE where_condition]
[ORDER BY order_expression_list]
[LIMIT row_count]
Multiple-Table-Delete Syntax:
DELETE [hint_options] tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
Or:
DELETE [hint_options] FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]
where_condition:
expression
order_expression_list:
order_expression [, order_expression ...]
order_expression:
expression [ASC | DESC]
limit_row_count:
INT_VALUE
table_references:
{tbl_name | joined_table | table_subquery | select_with_parens} [, ...]
参数解释
| 参数 | 描述 |
|---|---|
| hint_options | 指定hint选项。 |
| tbl_name | 指定需要删除的表名。 |
| partition_name | 需要删除表的对应分区名。 |
| where_condition | 删除的表需要满足的过滤条件。 |
| order_expression_list | 删除的表的排序键列表。 |
| row_count | 删除的表的行数指定,指定的值只能为整数。 |
| table_references | 多表删除时指定的待选择的表序列。 |
示例
将 dws_ny 表的数据清空。
查询
dws_ny表中的数据。obclient> SELECT * FROM dws_ny; +----+--------+------------+ | id | name | date | +----+--------+------------+ | 1 | 张三 | 0000-00-00 | | 2 | 李四 | 0000-00-00 | +----+--------+------------+ 2 rows in set将
dws_ny表的数据清空。obclient> DELETE FROM dws_ny; Query OK, 2 rows affected运行后,再次查看
dws_ny表。obclient> SELECT * FROM dws_ny; Empty set
TRUNCATE 方式
描述
该语句用于完全清空指定表,但是保留表结构,包括表中定义的 Partition 信息。从逻辑上说,该语句与用于删除所有行的 DELETE FROM 语句相同。执行 TRUNCATE 语句,必须具有表的删除和创建权限。它属于 DDL 语句。
TRUNCATE TABLE 语句与 DELETE FROM 语句有以下不同:
删减操作会取消并重新创建表,这比一行一行的删除行要快很多。
TRUNCATE TABLE语句执行结果显示影响行数始终显示为 0 行。使用
TRUNCATE TABLE语句,表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。TRUNCATE语句不能在进行事务处理和表锁定的过程中进行,如果使用,将会报错。只要表定义文件是合法的,则可以使用
TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。
语法
TRUNCATE [TABLE] table_name;
参数解释
| 参数 | 描述 |
|---|---|
| table_name | 指定表名。 |
示例
将 t1 表的数据清空。
查询
t1表中的数据。obclient> SELECT * FROM t1; +----+--------+------+ | id | name | age | +----+--------+------+ | 1 | 张三 | 22 | | 2 | 李四 | 33 | +----+--------+------+ 2 rows in set将
t1表的数据清空。obclient> TRUNCATE t1; Query OK, 0 rows affected运行后,再次查看
t1表。obclient> SELECT * FROM t1; Empty set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




