Amazon Keyspaces 中的 DML 语句(数据操作语言) - Amazon Keyspaces(针对 Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Keyspaces 中的 DML 语句(数据操作语言)

数据操作语言(DML) 是一组用于管理 Amazon Keyspaces(适用于 Apache Cassandra)表中的数据的 CQL 语句。可以使用 DML 语句在表中添加、修改或删除数据。

还可以使用 DML 语句查询表中的数据。(请注意,CQL 不支持联接或子查询。)

SELECT

使用 SELECT 语句可查询数据。

语法

select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE where_clause ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ] select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] ) selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')' where_clause ::= relation ( AND relation )* relation ::= column_name operator term '(' column_name ( ',' column_name )* ')' operator tuple_literal operator ::= '=' | '<' | '>' | '<=' | '>=' | CONTAINS | CONTAINS KEY ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*

示例

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ; SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

有关将 JSON 编码的数据类型映射到 Amazon Keyspaces 数据类型的表,请参阅亚马逊 Keyspaces 数据类型的 JSON 编码

排序结果

这些区域有:ORDER BY子句指定返回结果的排序顺序。它将列名列表以及每列的排序顺序作为参数。您只能在排序子句中指定聚类列。不允许使用非群集列。排序顺序选项为ASC用于升序和DESC以获取降序排序顺序。如果省略排序顺序,则使用聚类列的默认顺序。有关可能的排序顺序,请参阅亚马逊 Keyspaces 中的排序结果

示例

SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;

INSERT

使用 INSERT 语句可向表添加行。

语法

insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ] names_values ::= names VALUES tuple_literal json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'

示例

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id) VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;

JSON 支持

有关将 JSON 编码的数据类型映射到 Amazon Keyspaces 数据类型的表,请参阅亚马逊 Keyspaces 数据类型的 JSON 编码

这些区域有:JSON关键字可用于插入JSON将地图编码为单一的行。对于表中存在但在 JSON 插入语句中忽略的列,请使用DEFAULT UNSET以保留现有值。使用DEFAULT NULL将 NULL 值写入省略的每一行并覆盖现有值(需支付标准写入费用)。DEFAULT NULL是默认选项。

示例

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';

如果 JSON 数据包含重复的密钥,Amazon Keyspaces 将存储密钥的最后一个值(类似于 Apache Cassandra)。在以下示例中,重复键为id,值234-56-7890将被写入。

示例

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';

UPDATE

使用 UPDATE 语句可修改表中的行。

语法

uupdate_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

示例

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;

要递增 counter,请使用以下语法。有关更多信息,请参阅Counters

UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';

DELETE

使用 DELETE 语句可从表中删除行。

语法

delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

其中:

  • table_name 是包含要删除的行的表。

示例

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;