数据删除
大约 3 分钟
数据删除
1. 数据删除
数据删除可以通过 delete 语句来完成,其中可以通过指定标签、属性(自 V2.0.12.1 起支持)和时间的过滤条件来删除部分数据。
注意:
常规的数据删除命令 (DELETE FROM 语句)执行后不会立即释放磁盘空间,而是先对数据进行标记,依靠后台任务逐步地去释放空间。
调小参数 inner_compaction_task_selection_disk_redundancy 和 inner_compaction_task_selection_mods_file_threshold 可以加快该过程。
删除数据库命令(DROP DATABASE 语句)可以立即释放磁盘空间。
1.1 语法概览
DELETE FROM <TABLE_NAME> [WHERE_CLAUSE]?
WHERE_CLAUSE:
WHERE DELETE_CONDITION
DELETE_CONDITION:
SINGLE_CONDITION
| DELETE_CONDITION AND DELETE_CONDITION
| DELETE_CONDITION OR DELETE_CONDITION
SINGLE_CONDITION:
TIME_CONDITION | ID_CONDITION | ATTRIBUTE_CONDITION
TIME_CONDITION:
time TIME_OPERATOR LONG_LITERAL
TIME_OPERATOR:
< | > | <= | >= | =
ID_CONDITION:
identifier = STRING_LITERAL
ATTRIBUTE_CONDITION:
attribute_identifier (= | != | > | >= | < | <= | LIKE) STRING_LITERAL
| attribute_identifier IS [NOT] NULL
| attribute_identifier IN (STRING_LITERAL [, STRING_LITERAL] ...)- 支持时间条件、标签条件和属性条件,条件之间仅可使用 AND 和 OR 运算符连接。
- 对于时间条件,支持 >、<、=、<=、>= 五种运算符。
- 对于标签条件,目前仅支持 = 运算符。
- 对于属性条件,支持
=、!=、IS NULL、IS NOT NULL、>、>=、<、<=、LIKE和IN。左值须直接使用属性列名,不支持包含属性列的表达式;右值仅支持字符串常量。 - 每个包含属性过滤的合取式(由 AND 连接的一组条件)最多匹配 1000 个设备,超过时拒绝整条删除语句。可增加属性过滤条件以缩小范围,或移除所有属性过滤条件后重新确认删除范围。
1.2 示例
可以在示例数据页面中导入示例数据。可以使用这些数据来测试和执行示例中的SQL语句。
1.2.1 删除全表数据
DELETE FROM table1;1.2.2 删除一段时间范围
DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00;1.2.3 删除指定设备
DELETE FROM table1
WHERE time >= 2024-11-27 16:39:00 and time <= 2024-11-29 16:42:00
AND device_id='101' and model_id = 'B';1.2.4 删除指定属性条件数据
自 V2.0.12.1 起,可按属性列过滤删除数据。例如,删除 table1 中属性列 model_id 为 'B',且时间不早于 2024-11-27 16:39:00 的数据:
DELETE FROM table1
WHERE model_id = 'B'
AND time >= 2024-11-27 16:39:00;2. 设备删除
设备删除语句支持删除表里所有设备及相关数据。
2.1 语法概览
DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)?- WHERE 仅支持对标签的等值过滤,条件之间仅可使用 AND 和 OR 运算符连接,不支持时间条件。
2.2 示例
DELETE DEVICES FROM table1 WHERE device_id = '101';