本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:从亚马逊密钥空间表中读取
在教程:在亚马逊密钥空间表中插入和加载数据一节中,您使用 SELECT
语句验证了已成功将数据添加到表中。在本节中,您可以细化使用 SELECT
,以只显示特定列以及满足特定条件的行。
SELECT
语句的一般形式如下所示。
SELECT column_list
FROM table_name
[WHERE condition
[ALLOW FILTERING]] ;
选择表中的所有数据
SELECT
语句最简单的形式是返回表中的所有数据。
重要
在生产环境中,运行此命令通常不是最佳做法,该命令将返回表中的所有数据。
选择表的所有数据
-
运行以下 查询。
SELECT * FROM "myGSGKeyspace".employees_tbl ;
将通配符 (
*
) 用于column_list
可选择所有列。
选择列的子集
查询列的子集
-
要仅检索
id
、name
和manager_id
列,请运行以下查询。SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;
输出将按照
SELECT
语句中列出的顺序,仅包含指定的列。
选择行的子集
查询大型数据集时,您可能只需要满足特定条件的记录。为此,您可以在 SELECT
语句末尾追加一个 WHERE
子句。
查询行的子集
-
要仅检索 ID 为
'234-56-7890'
的员工的记录,请运行以下查询。SELECT * FROM "myGSGKeyspace".employees_tbl WHERE id='234-56-7890' ;
前面的
SELECT
语句仅返回id
为234-56-7890
的行。
理解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
子句中的复合条件后添加ALLOW FILTERING
,如下例所示。SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;
请注意,使用
ALLOW FILTERING
可能会导致性能不稳定,特别是对于多分区的大型表。
-
试试吧
创建您自己的 CQL 查询,以从 employees_tbl
表中查找以下内容:
-
查找所有员工的
name
、project
和id
。 -
查找实习生
Bob
正在从事的项目(在输出中至少包括他的姓名、项目和角色)。 -
高级:创建应用程序,以查找与实习生
Bob
具有相同经理的所有员工。提示:这可能需要多个查询。 -
高级:创建应用程序,以查找正从事项目
NightFlight
的所有员工的选定列。提示:解决这个问题可能需要多个语句。