本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Keyspaces 中的CQLSELECT
語句從表中讀取數據
在此將數據插入並將其加載到 Amazon Keyspaces 表中區段中,您使用SELECT
陳述式來確認您已成功將資料新增至資料表。在本節中,您可以調整使用SELECT
以顯示特定欄,以及僅顯示符合特定準則的列。
SELECT
聲明的一般形式如下。
SELECT column_list
FROM table_name
[WHERE condition
[ALLOW FILTERING]] ;
選擇表格中的所有數據
SELECT
語句的最簡單形式返回表中的所有數據。
重要
在生產環境中,執行此命令通常不是最佳作法,因為它會傳回資料表中的所有資料。
若要選取表格的所有資料
-
開啟 AWS 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
選擇列的子集
若要查詢資料欄的子集
-
開啟 AWS 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
選取列的子集
查詢大型資料集時,您可能只想要符合特定條件的記錄。要做到這一點,你可以追加一個WHERE
子句到我們的SELECT
聲明的末尾。
若要查詢列的子集
-
開啟 AWS 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
子句中使用簡單的條件:-
此資料欄是表格中唯一的分割區索引鍵資料欄。
-
您可以
ALLOW FILTERING
在條WHERE
款中的條件之後加入。請注意,使用
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 年所有獎項的一等獎得主,並顯示書名和獎項名稱。