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

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

亚马逊Keyspaces 中的 DML 语句(数据操作语言)

数据操作语言(DML) 是一组用于管理Amazon Keyspaces(针对 Apache Cassandra)表中的数据的 Cassandra 查询语言 (CQL) 表中的数据的 Cassandra 语句。可以使用 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 TOKEN 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 编码.

代币

您可以应用TOKEN函数,将转到PARTITION KEY列中受益SELECTWHERE子句。使用TOKEN函数,Amazon Keyspaces 根据映射的令牌值返回行PARTITION_KEY而不是以价值为依据PARTITION KEY.

示例

SELECT TOKEN(id) from myTable; SELECT TOKEN(id) from myTable where TOKEN(id) > 100 and TOKEN(id) < 10000;

对结果进行排序

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

示例

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

为了与既定的 Cassandra 驱动程序行为兼容,当您通过 Cassandra 驱动程序和开发者工具使用 Cassandra 查询语言 (CQL) API 调用对系统表执行操作时,不强制执行基于标签的授权策略。有关更多信息,请参阅 基于标签的亚马逊Keyspaces 资源访问权限

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用于插入 a 的关键字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 语句可修改表中的行。

语法

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,请使用以下语法。有关更多信息,请参阅 计数器

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

删除

使用 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' ;