翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 * frommykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * frommykeyspace.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) frommy_table
WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
TTL 関数
TTL
関数を SELECT
ステートメントと共に使用すると、列に保存されている有効期限を秒単位で取得できます。どの TTL
値も設定されていない場合、関数は null
を返します。
例
SELECT TTL(
my_column
) frommy_table
;
TTL
関数は、コレクションなどのマルチセル列には使用できません。
WRITETIME 関数
SELECT
ステートメントで WRITETIME
関数を使用して、列の値のメタデータとして保存されているタイムスタンプを取得できるのは、テーブルがクライアント側のタイムスタンプを使用している場合だけです。詳細については、「Amazon Keyspaces でのクライアント側のタイムスタンプ」を参照してください。
SELECT WRITETIME(
my_column
) frommy_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。