翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
句の単純条件を使用できます。-
列はテーブルの唯一のパーティションキー列です。
-
WHERE
句の条件の後にALLOW FILTERING
を追加します。ALLOW FILTERING
を使用すると、特に、複数に分割された大規模なテーブルでは、パフォーマンスの一貫性が失われる可能性がありますので注意が必要です。
-
-
複合条件 — 複数の単純条件を
AND
によって結合したもの。WHERE column_name1=value1 AND column_name2=value2 AND column_name3=value3...
次の条件のいずれかを満たしていれば
WHERE
句の複合条件を使用できます。-
WHERE
句で使用できる列には、テーブルのパーティションキーに列のすべてまたはサブセットを含める必要があります。WHERE
句内の列のサブセットのみを使用する場合は、パーティションキーの先頭列から始めて、パーティションキー列の連続したセットを左から右に含めます。例えば、パーティションキー列がyear
、、award
の場合month
、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 年のすべての賞の初等賞品の勝者を表示し、本のタイトルと賞名を表示します。