教程:从亚马逊 Keyspaces 表中阅读 - Amazon Keyspaces (for Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

教程:从亚马逊 Keyspaces 表中阅读

教程:将数据插入并加载到 Amazon Keyspaces 表中一节中,您使用 SELECT 语句验证了已成功将数据添加到表中。在本节中,您可以细化使用 SELECT,以只显示特定列以及满足特定条件的行。

SELECT 语句的一般形式如下所示。

SELECT column_list FROM table_name [WHERE condition [ALLOW FILTERING]] ;

选择表中的所有数据

SELECT 语句最简单的形式是返回表中的所有数据。

重要

在生产环境中,运行此命令通常不是最佳做法,该命令将返回表中的所有数据。

选择表的所有数据

  • 运行以下 查询。

    SELECT * FROM "myGSGKeyspace".employees_tbl ;

    将通配符 (*) 用于 column_list 可选择所有列。

选择列的子集

查询列的子集

  • 要仅检索 idnamemanager_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 语句仅返回 id234-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 表中查找以下内容:

  • 查找所有员工的 nameprojectid

  • 查找实习生 Bob 正在从事的项目(在输出中至少包括他的姓名、项目和角色)。

  • 高级:创建应用程序,以查找与经理相同的所有员工Bob实习生。提示:这可能需要多个查询。

  • 高级:创建应用程序,以查找从事项目的所有员工的选定列NightFlight. 提示:解决此问题可能需要多个语句。