DELETE

更新时间: 2024-10-18 15:51:47

本文介绍删除时空数据表中的时空数据语法。

语法

delete_statement ::=  DELETE FROM table_identifier
                      WHERE where_clause
where_clause     ::=  relation ( ( AND | OR ) relation )*
relation         ::=  ( column_identifier ) operator term
operator         ::=  '=' | '!=' | IN | CONTAINS | CONTAINS KEY

使用说明

重要

在使用DELETE语句删除数据前,您需要注意以下内容。

对于宽表引擎:

  • DELETE操作是一项高风险操作,为了确保数据安全,Lindorm对DELETE的语义做了限制。只能使用完整的主键来删除一行数据,不支持一次性删除多行数据。

  • 删除操作并非是先读取再删除,而是直接写入删除标记。所以无论被删除的行是否存在,删除都会成功。

  • 使用UPSERT写入数据时如果通过HINT将未来时间戳作为数据的版本 ,那么执行DELETE时,即使DELETE语句执行成功,未来时间戳的数据也并不会被真正删除。详细介绍,请参见多版本数据管理

对于时序引擎:

  • DELETE的WHERE条件中只能指定TAG列的过滤条件。

  • DELETE无法删除单条具体数据,只能删除满足TAG过滤条件的时间序列中的所有数据。

删除条件(where_clause)

宽表引擎和时序引擎均支持指定删除条件(where_clause)。

  • 在宽表引擎中,where_clause必须是主键列,且过滤条件必须能够唯一限定一行数据。

  • 在时序引擎中,where_clause必须是TAG列,删除操作会把满足TAG过滤条件的时间线中所有数据全部删除。

关系表达式(relation)

使用DELETE语法在时序表中删除时间线时,指定的column_identifier必须是VARCHAR列(标签列)。

示例

删除时空数据表dtid=1的时空数据。

DELETE from dt WHERE id=1;
上一篇: UPSERT 下一篇: 性能测试
阿里云首页 云原生多模数据库 Lindorm 相关技术圈