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

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

教程:从 Amazon 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 的所有员工的选定列。提示:解决这个问题可能需要多个语句。