DML Amazon Keyspaces の ステートメント (データ操作言語) - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DML Amazon Keyspaces の ステートメント (データ操作言語)

データ操作言語 (DML) は、Amazon Keyspaces (Apache Cassandra 向けCQL) テーブル内のデータの管理に使用する Cassandra クエリ言語 () ステートメントのセットです。DML ステートメントを使用して、テーブル内のデータを追加、変更、または削除します。

DML ステートメントを使用して、テーブル内のデータをクエリすることもできます。( CQLは結合またはサブクエリをサポートしていないことに注意してください)。

SELECT

SELECT ステートメントを使用してデータをクエリします。

[Syntax] (構文)

select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE 'where_clause' ] [ ORDER BY 'ordering_clause' ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ] select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] ) selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')' where_clause ::= relation ( AND relation )* relation ::= column_name operator term TOKEN operator ::= '=' | '<' | '>' | '<=' | '>=' | IN | CONTAINS | CONTAINS KEY ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ; SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

エンコードされたデータ型を Amazon Keyspaces JSONデータ型にマッピングするテーブルについては、「」を参照してくださいJSON Amazon Keyspaces データ型のエンコード

IN キーワードの使用

IN キーワードは、1 つ以上の値が等しいことを指定します。パーティションキーとクラスタリング列に適用できます。結果は SELECT ステートメントにキーが示されている順序で返されます。

SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 = 2; SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * from mykeyspace.mytable WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * from mykeyspace.mytable WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;

IN キーワードと Amazon Keyspaces がステートメントを処理する方法の詳細については、Amazon Keyspaces のクエリで SELECT ステートメントで IN演算子を使用する を参照してください。

結果の順序付け

ORDER BY 句は、返された結果のソート順序を指定するものです。列名のリストと各列のソート順序を引数として受け取ります。順序句のクラスタリング列のみ指定できます。非クラスタリング列は許容されません。ソート順序のオプションは、昇順の ASC と降順の DESC です。ソート順序を省略すると、クラスタリング列のデフォルトの順序が使用されます。可能なソート順序については、「Amazon Keyspaces ORDER BYで を使用して結果を注文する」を参照してください。

SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;

IN キーワードと一緒に ORDER BY を使用すると、結果はページ内で順序付けられます。ページ分割を無効にした状態での完全な並べ替えはサポートしていません。

TOKEN

TOKEN関数は、SELECT 節と WHERE 節の PARTITION KEY 列に適用できます。TOKEN 関数を使用すると、Amazon Keyspaces は PARTITION KEY の値ではなくの PARTITION_KEY マッピングされたトークン値に基づいて行を返します。

TOKEN キーワードではリレーションはサポートしていません。IN

SELECT TOKEN(id) from my_table; SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;

TTL 関数

TTL 関数を SELECT ステートメントと共に使用すると、列に保存されている有効期限を秒単位で取得できます。どの TTL 値も設定されていない場合、関数は null を返します。

SELECT TTL(my_column) from my_table;

TTL 関数は、コレクションなどのマルチセル列には使用できません。

WRITETIME 関数

SELECT ステートメントで WRITETIME 関数を使用して、列の値のメタデータとして保存されているタイムスタンプを取得できるのは、テーブルがクライアント側のタイムスタンプを使用している場合だけです。詳細については、「Amazon Keyspaces でのクライアント側のタイムスタンプ」を参照してください。

SELECT WRITETIME(my_column) from my_table;

WRITETIME 関数は、コレクションなどのマルチセル列には使用できません。

注記

確立された Cassandra ドライバーの動作との互換性のために、Cassandra ドライバーとデベロッパーツールを介して Cassandra クエリ言語 (CQL) API呼び出しを使用してシステムテーブルでオペレーションを実行する場合、タグベースの承認ポリシーは適用されません。詳細については、「 タグに基いた Amazon Keyspaces リソースアクセス」を参照してください。

INSERT

INSERT ステートメントを使用してテーブルに行を追加します。

[Syntax] (構文)

insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ] [ USING update_parameter ( AND update_parameter )* ] names_values ::= names VALUES tuple_literal json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id) VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;

パラメータを更新する

INSERT は以下の値を update_parameter としてサポートします。

  • TTL — 秒単位の時間値。設定可能な最大値は 630,720,000 秒で、20 年に相当します。

  • TIMESTAMP – と呼ばれる標準ベースタイムからのマイクロ秒数を表すbigint値 epoch: 1970 年 1 月 1 日 00:00:00 GMT。Amazon Keyspaces タイムスタンプは、過去 2 日間と将来 5 分の範囲とします。

INSERT INTO my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;

JSON サポート

エンコードされたデータ型を Amazon Keyspaces JSONデータ型にマッピングするテーブルについては、「」を参照してくださいJSON Amazon Keyspaces データ型のエンコード

JSON キーワードを使用すれば、エンコードされた JSON マップを 1 行として挿入できます。テーブルには存在するが、JSON挿入ステートメントでは省略されている列については、 DEFAULT UNSET を使用して既存の値を保持します。を使用してDEFAULT NULL、省略された列の各行にNULL値を書き込み、既存の値を上書きします (標準の書き込み料金が適用されます)。 DEFAULT NULLがデフォルトのオプションです。

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';

JSON データに重複するキーが含まれている場合、Amazon Keyspaces はキーの最後の値を保存します (Apache Cassandra と同様)。以下の例で、重複キーは id であり、値 234-56-7890 を使用します。

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';

UPDATE

UPDATE ステートメントを使用して、テーブル内の行を変更します。

[Syntax (構文)]

update_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;

counter を増やすには、次の構文を使用します。詳細については、「カウンタ」を参照してください。

UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';

パラメータを更新する

UPDATE は以下の値を update_parameter としてサポートします。

  • TTL — 秒単位の時間値。設定可能な最大値は 630,720,000 秒で、20 年に相当します。

  • TIMESTAMP – と呼ばれる標準ベースタイムからのマイクロ秒数を表すbigint値 epoch: 1970 年 1 月 1 日 00:00:00 GMT。Amazon Keyspaces タイムスタンプは、過去 2 日間と将来 5 分の範囲とします。

UPDATE my_table (userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123') USING TIMESTAMP '2022-11-03 13:30:54+0400';

DELETE

DELETE ステートメントを使用してテーブルから行を削除します。

[Syntax (構文)]

delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name [ USING update_parameter ( AND update_parameter )* ] WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term

Where:

  • table_name は削除する行が含まれているテーブルです。

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;

DELETE は、以下の値を update_parameter のようにサポートします。

  • TIMESTAMP – と呼ばれる標準ベースタイムからのマイクロ秒数を表すbigint値 epoch: 1970 年 1 月 1 日 00:00:00 GMT。