腾讯云数据仓库 TCHouse-X DELETE 语句

这篇说说TCHouse-X中DELETE语句的用法,仅支持对定义了主键的内表进行删除操作,可基于条件删除或清空表数据,并提供语法、示例及性能建议。 语法与限制:DELETE支持WHERE子句条件删除或省略时清空全表,但仅限主键表。 示例与错误:展示了基于条件、子查询及清空表的正确操作,非主键表删除会报错。 注意事项:仅内表支持DELETE,清空大表建议使用TRUNCATE TABLE。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

DELETE 语句用于从 TCHouse-X 表中删除满足指定条件的行。

注意:仅限主键表:TCHouse-X 目前仅支持对定义了主键(Primary Key)的内表进行 DELETE 操作。非主键表不支持此操作。

一、语法

DELETE [FROM] [database_name.]table_name [ WHERE where_conditions ]

·如果提供 WHERE 子句,则删除匹配条件的行。

·如果省略 WHERE 子句,则删除表中的所有行(清空表内容)。

二、使用说明

·谓词限制:WHERE 子句中的条件仅在目标表为主键表时有效。

·条件灵活性:WHERE 子句右侧的表达式规则与 SELECT 语句相同,支持子查询。

·结果反馈:执行完成后,系统会在消息栏中报告受影响(被删除)的行数。

·统计信息更新:

·在执行大规模 DELETE 操作后,建议执行 COMPUTE STATS 语句。

·原因:保持统计信息最新对优化器生成高效的连接(Join)查询执行计划至关重要,特别是对于大表。

三、示例

准备测试表

– 创建主键表并插入数据CREATE TABLE test_pk (id int PRIMARY KEY, content int);INSERT INTO test_pk VALUES (1,1), (2,2), (3,3), (4,4);– 创建非主键表CREATE TABLE test_nopk (id int, content int);

四、基于条件删除

— 删除指定 ID 的行DELETE FROM test_pk WHERE id = 1;– 使用子查询删除:删除 ID 大于“ID为2的行”的所有行DELETE FROM test_pk WHERE id > (SELECT id FROM test_pk WHERE id = 2);– 基于非主键字段条件删除DELETE FROM test_pk WHERE content = 2;

五、清空表数据

— 删除主键表中的所有行DELETE FROM test_pk;

六、错误示例

— 尝试删除非主键表数据(将触发报错)DELETE FROM test_nopk;– 报错信息: ERROR: AnalysisException: Tci NOT SUPPORT: Currently only support delete with primary key

七、注意事项

·内表限制:仅 TCHouse-X 内表支持 DELETE 操作,外表(如 Hive 映射表)不支持。

·性能建议:若需清空整个大表,使用 TRUNCATE TABLE 通常比不带条件的 DELETE 更快。

赞 (0)
上一篇 4天前
下一篇 4天前