DELETE
1つ以上のカラムからデータを削除するか、行全体を削除します。
DELETE
の使用はパフォーマンスに影響を及ぼす可能性があります。トゥームストーンが作成されるため、コンパクションによって削除されない限り古いデータが読み込まれます。構文
DELETE [ column_name [ term ] [ , ... ] ] FROM [keyspace_name.]table_name [ USING TIMESTAMP timestamp_value ] WHERE PK_column_conditions [ ( IF EXISTS | IF static_column_conditions ) ] ;
構文規則 | 説明 |
---|---|
大文字 | リテラル・キーワード。 |
小文字 | リテラル以外。 |
イタリック体 |
変数値。ユーザー定義値と置き換えます。 |
[] |
任意。角かっこ( [] )で任意指定のコマンド引数を囲みます。角かっこは入力しないでください。 |
( ) |
グループ。丸かっこ(( ) )は、選択肢を含むグループを示します。丸かっこは入力しないでください。 |
| |
または。縦棒( | )で代替要素を区切ります。要素のいずれかを入力してください。縦棒は入力しないでください。 |
... |
繰り返し可能。省略記号(... )は、構文要素を必要な回数だけ繰り返すことができることを示します。 |
'Literal string' |
単一引用符( ' )でCQL文内のリテラル文字を囲みます。大文字を維持するには、単一引用符を使用します。 |
{ key : value } |
マップ・コレクション。中かっこ( { } )でマップ・コレクションまたはキーと値のペアを囲みます。コロンでキーと値を区切ります。 |
<datatype1,datatype2> |
セット、リスト、マップ、またはタプル。山かっこ(< > )で、セット、リスト、マップまたはタプル内のデータ型を囲みます。データ型はコンマで区切ります。 |
cql_statement; |
CQL文の終了。セミコロン( ; )ですべてのCQL文を終了します。 |
[--] |
コマンドライン・オプションとコマンド引数は、2つのハイフン(-- )。この構文は、引数がコマンドライン・オプションと間違われる可能性がある場合に役立ちます。 |
' <schema> ... </schema> ' |
検索CQLのみ:単一引用符( ' )でXMLスキーマ宣言全体を囲みます。 |
@xml_entity='xml_entity_type' |
検索CQLのみ:スキーマ・ファイルおよびsolrConfigファイル内のXML要素を上書きするための実体とリテラル値を示します。 |
- column_name
-
削除するカラムを設定するか、カラムのコンマ区切りリストを使用します。カラムが指定されていない場合は、行全体が削除されます。
- term
-
コレクション型の要素識別子。
- リストは項目のインデックス番号を指定します(先頭は0)。
- マップは項目の要素キーを指定します。
- timestamp_value
-
timestamp_valueよりも古い値を削除します。
- PK_column_conditions
-
PRIMARY KEY値を照合するための構文。複数の条件はANDで区切ります。制約事項:
- 等号(=)とINのみがサポートされています。
- 静的カラム条件を指定する場合、範囲(IN)はサポートされません。「IF condition」を参照してください。
- 条件に一致する行のカラムからデータを削除する場合は、すべてのプライマリ・キーに対して条件を指定する必要があります。
- IF EXISTS
-
文によって処理が実行されない場合はエラーが返されます。
- IF condition
-
静的フィールドが一致するための条件を指定します。複数の条件はANDで区切ります。制約事項: プライマリ・キーの文を変更します。すべてのプライマリ・キーが必須です。
例
指定されたカラムのデータの行からの削除
特定のカラムのデータを削除するには、DELETEコマンドの後に、カラムをコンマで区切ってリストします。id
で指定されたサイクリストについて、firstnameカラムとlastnameカラムのデータをNullに変更します。
DELETE firstname, lastname FROM cycling.cyclist_name WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0;
CREATE TABLE cycling.cyclist_name ( id UUID PRIMARY KEY, lastname text, firstname text );
id | firstname | lastname
--------------------------------------+-----------+-----------------
e7ae5cf3-d358-4d99-b900-85902fda9bb0 | Alex | FRAME
fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS
5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | VOS
220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | TIRALONGO
6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47 | Steven | KRUIKSWIJK
e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
(6 rows)
id | firstname | lastname
--------------------------------------+-----------+-----------------
e7ae5cf3-d358-4d99-b900-85902fda9bb0 | null | null
fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS
5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | VOS
220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | TIRALONGO
6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47 | Steven | KRUIKSWIJK
e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
(6 rows)
行全体の削除
DELETEの後にカラム名を入力しないと、条件に一致する行全体が削除されます。IF EXISTS
を指定して、サイクリスト・エントリーをcyclist_name
テーブルから削除し、条件に一致する行がない場合はエラーを返します。
DELETE FROM cycling.cyclist_name WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0 IF EXISTS;
True
を返す場合(このプライマリ・キーを含む行が存在する場合)、以下のようなテーブルが標準出力で表示されます。 [applied]
-----------
True
id | firstname | lastname
--------------------------------------+-----------+-----------------
fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS
5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | VOS
220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | TIRALONGO
6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47 | Steven | KRUIKSWIJK
e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
(5 rows)
静的カラム条件に基づく行の削除
IF
条件はWHERE
句を制限し、非PRIMARY KEYカラム(firstnameやlastnameなど)の値に基づく選択を可能にします。以下の例では、firstnameとlastnameが条件に一致していない場合はサイクリスト・レコードが削除されます。
DELETE FROM cycling.cyclist_name WHERE id = fb372533-eb95-4bb4-8685-6ef61e994caa IF firstname = 'Michael' AND lastname = 'Smith';
[applied] | firstname | lastname
-----------+-----------+----------
False | Michael | MATTHEWS
条件付きでデータをカラムから削除する
条件付きでデータをカラムから削除するには、IFまたはIF EXISTS句を使用します。カラム・データの条件付き削除は、UPDATEの条件付き実行に似ています。
DELETE id FROM cycling.cyclist_id WHERE lastname = 'JONES' and firstname = 'Bram' IF EXISTS;
False
が返され、コマンドは失敗します。この場合、標準出力は次のようになります。 [applied]
-----------
False
DELETE id FROM cycling.cyclist_id WHERE lastname = 'WELTEN' AND firstname = 'Bram' IF age = 20;
[applied]
カラムにFalse
と表示され、失敗した条件に関する情報も表示されます。 [applied] | age
-----------+-----
False | 18
1つ以上の行の削除
WHERE句では、指定したテーブルから削除する行を指定します。
DELETE FROM cycling.cyclist_name WHERE id = 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47;
id | firstname | lastname
--------------------------------------+-----------+-----------------
fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS
5b6962dd-3f90-4c93-8f61-eabfa4a803e2 | Marianne | VOS
220844bf-4860-49d6-9a4b-6b5d3a79cbfb | Paolo | TIRALONGO
e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
(4 rows)
複数の行を削除するには、キーワードINを使用して、値のコンマ区切りリストを丸かっこで囲んで指定します。
DELETE FROM cycling.cyclist_name WHERE id IN ( 5b6962dd-3f90-4c93-8f61-eabfa4a803e2, 220844bf-4860-49d6-9a4b-6b5d3a79cbfb );
IN
述語の使用はサポートされていません。 id | firstname | lastname
--------------------------------------+-----------+-----------------
fb372533-eb95-4bb4-8685-6ef61e994caa | Michael | MATTHEWS
e7cd5752-bc0d-4157-a80f-7523add8dbcd | Anna | VAN DER BREGGEN
(2 rows)
タイムスタンプを使用した古いデータの削除
TIMESTAMPはマイクロ秒を表す整数です。TIMESTAMPを使用して、削除するデータを特定します。クエリーによって、タイムスタンプより古いパーティションの行が削除されます。
DELETE firstname, lastname FROM cycling.cyclist_name USING TIMESTAMP 1318452291034 WHERE lastname = 'VOS';
コレクション・セット、リスト、またはマップからの削除
sponsorship
であるcolumn_nameを指定します。DELETE sponsorship FROM cycling.race_sponsors WHERE race_name = 'Giro d''Italia';
リストから要素を削除するには、column_nameの後に、リスト・インデックス位置を角かっこで囲んで指定します。
DELETE sponsorship[2] FROM cycling.race_sponsors WHERE race_year = 2018 AND race_name = 'Tour de France';
list
から要素を削除するには、内部読み取りが必要です。さらに、クライアント側アプリケーションでは、リスト全体を読み取り、削除する値を検索することによってのみインデックス位置を検出できるため、操作のレイテンシーが増えます。操作の完了前に別のスレッドまたはクライアントがリストの先頭に要素を書き込んだ場合には、誤ったデータが削除されます。DELETE teams[2014] FROM cycling.cyclist_teams WHERE id = 5b6962dd-3f90-4c93-8f61-eabfa4a803e2;