本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 ::= '=' | '<' | '>' | '<=' | '>=' | IN | 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 数据类型的表,请参阅 Amazon Keyspaces 数据类型的 JSON 编码。
使用 IN
关键字
IN
关键字指定一个或多个值的相等性。它可以应用于分区键和聚类列。结果按照键在 SELECT
语句中的显示顺序返回。
示例
SELECT * from mykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 = 2;
SELECT * from mykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 <= 2;
SELECT * from mykeyspace.mytable
WHERE primary.key1 = 1 and clustering.key1 IN (1, 2);
SELECT * from mykeyspace.mytable
WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;
有关 IN
关键字以及 Amazon Keyspaces 如何处理该语句的更多信息,请参阅在 Amazon Keyspaces 的查询中将 IN 运算符与 SELECT 语句配合使用。
对结果排序
ORDER BY
子句指定返回结果的排序顺序。它采用列名称列表以及每列的排序顺序作为参数。您只能在排序子句中指定聚类列。不允许指定非聚类列。排序顺序选项是 ASC
(用于升序排序顺序)和 DESC
(用于降序排序顺序)。如果排序顺序被忽略,则使用聚类列的默认排序方式。有关可能的排序顺序,请参阅在 Amazon Keyspaces 中使用 ORDER BY 对结果排序。
示例
SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;
将 ORDER BY
与 IN
关键字一起使用时,结果在一个页面内排序。不支持在禁用分页的情况下进行完全重新排序。
TOKEN
您可以将 TOKEN
函数应用于 SELECT
和 WHERE
子句中的 PARTITION KEY
列。使用 TOKEN
函数时,Amazon Keyspaces 会根据 PARTITION_KEY
的映射令牌值(而不是 PARTITION KEY
的值)返回行。
IN
关键字不支持 TOKEN
关系。
示例
SELECT TOKEN(id) from
my_table
; SELECT TOKEN(id) frommy_table
WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
TTL 函数
可以将 TTL
函数与 SELECT
语句一起使用,检索为列存储的到期时间(以秒为单位)。如果未设置 TTL
值,该函数将返回 null
。
示例
SELECT TTL(my_column
) from my_table
;
TTL
函数不能用于多单元格列,例如集合。
WRITETIME 函数
仅当表使用了客户端时间戳时,您才能将 WRITETIME
函数与 SELECT
语句一起使用来检索存储为列值的元数据的时间戳。有关更多信息,请参阅 Amazon Keyspaces 中的客户端时间戳。
SELECT WRITETIME(
my_column
) frommy_table
;
WRITETIME
函数不能用于多单元格列,例如集合。
注意
为了与既定的 Cassandra 驱动程序行为兼容,当您通过 Cassandra 驱动程序和开发人员工具使用 Cassandra 查询语言 (CQL) API 调用对系统表执行操作时,系统不会强制实施基于标签的授权策略。有关更多信息,请参阅 基于标签的 Amazon Keyspaces 资源访问。