You need to enable JavaScript to run this app.
导航

DML

最近更新时间2024.02.06 15:23:21

首次发布时间2024.02.06 15:23:21

在ByteHouse 云数仓版中,DML(Data Manipulation Language,数据操纵语言) 语言包含插入、更新、删除数据操作,DML 操作不支持事务,一旦执行成功会立刻生效。
ByteHouse 云数仓版当前支持以下 DML 操作:

  1. 更新
    • ALTER TABLE ... UPDATE
    • UPDATE ... SET
  2. 删除
    • ALTER TABLE ... DELETE
    • Delete ... From

更新

ALTER TABLE ... UPDATE

ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr 

操作与指定过滤表达式相匹配的数据。作为一个变更 mutation来实现.

说明

ALTER TABLE 的前缀使这个语法与其他大多数支持SQL的系统不同。它的目的是表明,与OLTP数据库中的类似查询不同,这是一个繁重的操作,不是为频繁使用而设计。

  1. 不支持 Unique 表,详情参见 "UPDATE ... SET"。
  2. filter_expr必须是UInt8类型。这个查询将指定列的值更新为行中相应表达式的值,对于这些行,filter_expr取值为非零。使用CAST操作符将数值映射到列的类型上。不支持更新用于计算主键或分区键的列。
  3. 一个查询可以包含几个由逗号分隔的命令。
  4. 此语句的查询处理默认是异步操作。

示例

alter table table_alter update bool=1 where uint8=21;

UPDATE ... SET

UPDATE [db.]table SET a=b WHERE expr;

当前只支持unique表,对于其他场景请参考 "ALTER TABLE ... DELETE"语句。
示例

Update test.unique_table set str = 'updated'  WHERE date = '2023-12-18';

删除

ALTER TABLE ... DELETE

ALTER TABLE [<database>.]<table> DELETE WHERE <filter_expr>

删除匹配指定过滤表达式的数据,实现为突变

说明

ALTER TABLE前缀使得这个语法不同于大多数其他支持SQL的系统。它的目的是表示,与OLTP数据库中的类似查询不同,这是一个不为经常使用而设计的繁重操作。

  1. 不支持 Unique 表,详情参见 "Delete From"。
  2. filter_expr 的类型必须是UInt8。该查询删除表中该表达式接受非零值的行。
  3. 一个查询可以包含多个用逗号分隔的命令。
  4. 查询处理默认是异步的。

使用示例

alter table test_common delete where id=101

Delete ... From

DELETE FROM [db.]table WHERE expr;

当前只支持Unique表,对于其他场景请参考 "ALTER TABLE ... DELETE"语句。
示例

DELETE FROM musics WHERE Title LIKE '%hello%';