本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Keyspaces 中的CQLSELECT
语句从表中读取数据
在在 Amazon Keyspaces 表中插入和加载数据一节中,您使用 SELECT
语句验证了已成功将数据添加到表中。在本节中,您可以细化使用 SELECT
,以只显示特定列以及满足特定条件的行。
SELECT
语句的一般形式如下所示。
SELECT column_list
FROM table_name
[WHERE condition
[ALLOW FILTERING]] ;
选择表中的所有数据
SELECT
语句最简单的形式是返回表中的所有数据。
重要
在生产环境中,运行此命令通常不是最佳实践,因为它会返回表中的所有数据。
选择表的所有数据
-
打开 Amazon CloudShell 然后使用以下命令连接到 Amazon Keyspaces。请务必更新
us-east-1
使用您自己的区域。cqlsh-expansion cassandra.
us-east-1
.amazonaws.com 9142 --ssl -
运行以下 查询。
SELECT * FROM catalog.book_awards ;
将通配符 (
*
) 用于column_list
可选择所有列。该语句的输出类似于以下示例。year | award | category | rank | author | book_title | publisher ------+------------------+-------------+------+--------------------+-----------------------+--------------- 2020 | Wolf | Non-Fiction | 1 | Wang Xiulan | History of Ideas | AnyPublisher 2020 | Wolf | Non-Fiction | 2 | Ana Carolina Silva | Science Today | SomePublisher 2020 | Wolf | Non-Fiction | 3 | Shirley Rodriguez | The Future of Sea Ice | AnyPublisher 2020 | Kwesi Manu Prize | Fiction | 1 | Akua Mansa | Where did you go? | SomePublisher 2020 | Kwesi Manu Prize | Fiction | 2 | John Stiles | Yesterday | Example Books 2020 | Kwesi Manu Prize | Fiction | 3 | Nikki Wolf | Moving to the Chateau | AnyPublisher 2020 | Richard Roe | Fiction | 1 | Alejandro Rosalez | Long Summer | SomePublisher 2020 | Richard Roe | Fiction | 2 | Arnav Desai | The Key | Example Books 2020 | Richard Roe | Fiction | 3 | Mateo Jackson | Inside the Whale | AnyPublisher
选择列的子集
查询列的子集
-
打开 Amazon CloudShell 然后使用以下命令连接到 Amazon Keyspaces。请务必更新
us-east-1
使用您自己的区域。cqlsh-expansion cassandra.
us-east-1
.amazonaws.com 9142 --ssl -
要仅检索
award
、category
和year
列,请运行以下查询。SELECT award, category, year FROM catalog.book_awards ;
输出仅包含按
SELECT
语句中列出的顺序排列的指定列。award | category | year ------------------+-------------+------ Wolf | Non-Fiction | 2020 Wolf | Non-Fiction | 2020 Wolf | Non-Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Kwesi Manu Prize | Fiction | 2020 Richard Roe | Fiction | 2020 Richard Roe | Fiction | 2020 Richard Roe | Fiction | 2020
选择行的子集
查询大型数据集时,您可能只需要满足特定条件的记录。为此,您可以在 SELECT
语句末尾追加一个 WHERE
子句。
查询行的子集
-
打开 Amazon CloudShell 然后使用以下命令连接到 Amazon Keyspaces。请务必更新
us-east-1
使用您自己的区域。cqlsh-expansion cassandra.
us-east-1
.amazonaws.com 9142 --ssl -
要仅检索给定年份的奖项记录,请运行以下查询。
SELECT * FROM catalog.book_awards WHERE year=2020 AND award='Wolf' ;
前面的
SELECT
语句返回以下输出。year | award | category | rank | author | book_title | publisher ------+-------+-------------+------+--------------------+-----------------------+--------------- 2020 | Wolf | Non-Fiction | 1 | Wang Xiulan | History of Ideas | AnyPublisher 2020 | Wolf | Non-Fiction | 2 | Ana Carolina Silva | Science Today | SomePublisher 2020 | Wolf | Non-Fiction | 3 | Shirley Rodriguez | The Future of Sea Ice | AnyPublisher
了解 WHERE
子句
WHERE
子句用于筛选数据,并仅返回满足指定条件的数据。指定的条件可以是简单条件或复合条件。
如何在 WHERE
子句中使用条件
-
简单条件 – 单列
WHERE column_name=value
只要满足以下任何条件,便可以在
WHERE
子句中使用简单条件:-
该列是表中唯一的分区键列。
-
在
WHERE
子句中的条件后添加ALLOW FILTERING
。请注意,使用
ALLOW FILTERING
可能会导致性能不稳定,特别是对于多分区的大型表。
-
-
复合条件 – 通过
AND
连接的多个简单条件WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...
只要满足以下任何条件,便可以在
WHERE
子句中使用复合条件:-
可以在
WHERE
子句中使用的列需要包括表分区键中的所有列或列的子集。如果只想使用子WHERE
句中列的子集,则必须从左到右包含一组连续的分区键列,从分区键的前导列开始。例如,如果分区键列为year
month
、,award
则可以在WHERE
子句中使用以下列:year
year
ANDmonth
year
ANDmonth
ANDaward
-
在
WHERE
子句中的复合条件后添加ALLOW FILTERING
,如下例所示。SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;
请注意,使用
ALLOW FILTERING
可能会导致性能不稳定,特别是对于多分区的大型表。
-
试试看
创建您自己的CQL查询,从您的book_awards
表格中查找以下内容:
-
查找 2020 年 Wolf 奖的获奖者,并按排名排序显示书名和作者。
-
显示 2020 年所有奖项的一等奖得主,并显示书名和奖项名称。