本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊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列中受益SELECT和WHERE子句。使用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' ;