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

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

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

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

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

SELECT

使用 SELECT 语句可查询数据。

语法

select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE 'where_clause' ] [ ORDER BY 'ordering_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 编码

对结果进行排序

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

示例

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

代币

您可以将该TOKEN函数应用于SELECTWHERE子句中的PARTITION KEY列。使用该TOKEN函数,Amazon Keyspaces 根据的映射令牌值PARTITION_KEY而不是的值返回行PARTITION KEY

示例

SELECT TOKEN(id) from my_table; SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;

TTL 函数

您可以将TTL函数与SELECT语句一起使用来检索为列存储的过期时间(以秒为单位)。如果未设置任何TTL值,则该函数返回null

示例

SELECT TTL (my_column) from my_table;
注意

为了与既定的 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关键字将JSON编码的地图作为单行插入。对于表中存在但在 JSON 插入语句中省略的列,使用DEFAULT UNSET来保留现有值。用于DEFAULT 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_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' ;