使用 Amazon Keyspaces 中的CQLSELECT語句從表中讀取數據 - Amazon Keyspaces (適用於 Apache Cassandra)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Keyspaces 中的CQLSELECT語句從表中讀取數據

在此將數據插入並將其加載到 Amazon Keyspaces 表中區段中,您使用SELECT陳述式來確認您已成功將資料新增至資料表。在本節中,您可以調整使用SELECT以顯示特定欄,以及僅顯示符合特定準則的列。

SELECT聲明的一般形式如下。

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

選擇表格中的所有數據

SELECT語句的最簡單形式返回表中的所有數據。

重要

在生產環境中,執行此命令通常不是最佳作法,因為它會傳回資料表中的所有資料。

若要選取表格的所有資料
  1. 開啟 AWS CloudShell 並使用以下命令連接到 Amazon Keyspaces。確保更新 us-east-1 與您自己的區域。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 執行下列查詢。

    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

選擇列的子集

若要查詢資料欄的子集
  1. 開啟 AWS CloudShell 並使用以下命令連接到 Amazon Keyspaces。確保更新 us-east-1 與您自己的區域。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 若只要擷取awardcategory、和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

選取列的子集

查詢大型資料集時,您可能只想要符合特定條件的記錄。要做到這一點,你可以追加一個WHERE子句到我們的SELECT聲明的末尾。

若要查詢列的子集
  1. 開啟 AWS CloudShell 並使用以下命令連接到 Amazon Keyspaces。確保更新 us-east-1 與您自己的區域。

    cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
  2. 若只要擷取給定年份的獎勵記錄,請執行下列查詢。

    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子句中使用簡單的條件:

    • 此資料欄是表格中唯一的分割區索引鍵資料欄。

    • 您可以ALLOW FILTERING在條WHERE款中的條件之後加入。

      請注意,使用ALLOW FILTERING可能會導致效能不一致,尤其是對於大型和多分區資料表而言。

  • 複合條件 — 由連接的多個簡單條件AND

    WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...

    如果符合下列任一WHERE條件,您可以在子句中使用複合條件:

    • 您可以在子WHERE句中使用的資料行必須在資料表的分割索引鍵中包含全部或資料行子集。如果您只想使用子WHERE句中的資料欄子集,就必須從左至右包含一組連續的分割區索引鍵資料欄,從分割索引鍵的前置資料欄開始。例如,如果分割索引鍵資料行為yearmonth、,award則您可以在WHERE子句中使用下列資料欄:

      • year

      • year AND month

      • year AND month AND award

    • 您可以在WHERE子句中的複合條件ALLOW FILTERING之後加入,如下列範例所示。

      SELECT * FROM my_table WHERE col1=5 AND col2='Bob' ALLOW FILTERING ;

      請注意,使用ALLOW FILTERING可能會導致效能不一致,尤其是對於大型和多分區資料表而言。

嘗試一下

建立您自己的CQL查詢,以便從book_awards表格中尋找下列項目:

  • 查找 2020 年 Wolf 獎的獲獎者,並按排名顯示書名和作者。

  • 顯示 2020 年所有獎項的一等獎得主,並顯示書名和獎項名稱。