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 更快。