DELETE
该语句用于从表中删除数据行。表可以是分区表或者非分区表。
对于明细表、聚合表,以及更新表,支持删除表中指定分区的数据。从 2.3 版本开始,主键表支持完整的 DELETE...WHERE 语义,即支持按主键、任意列、以及子查询结果删除数据。从 3.0 版本开始,主键类型表丰富了 DELETE...WHERE 语义,支持使用多表关联和公用表表达式(CTE)。
注意事项
- 执行 DELETE 操作需要有对应表的 DELETE 权限。
- 不建议您执行高频的 DELETE 操作。如需要,请在业务低峰期进行。
- DELETE 删除的是表中数据,表依然存在。如果要删除表,参见 DROP TABLE。
- 为防止误删整表,必须在 DELETE 语句中指定 WHERE 子句。
- 删除的数据会标记为“Deleted”,暂时保留在 Segment 中,不会立即进行物理删除。Compaction(数据版本合并)完成之后会被回收。
- 该操作会同时删除和表相关的物化视图的数据。
DELETE 与明细类型、聚合类型和更新类型表
语法
DELETE FROM [<db_name>.]<table_name> [PARTITION <partition_name>]
WHERE
column_name1 op { value | value_list } [ AND column_name2 op { value | value_list } ...]
参数说明
参数 | 必选 | 描述 |
---|---|---|
db_name | No | 要操作的表所在的数据库。如果不指定,默认为当前数据库。 |
table_name | Yes | 要操作的表名。 |
partition_name | No | 要操作的分区名。 |
column_name | Yes | 作为删除条件的列,可以指定一个或多个列。 |
op | Yes | 指定的算子。支持 = 、> 、< 、>= 、<= 、!= 、IN 和 NOT IN 。 |