DELETE
1つ以上のカラムからデータを削除するか、行全体を削除します。
構文
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コマンドの後に、カラムをコンマで区切ってリストします。firstnameカラムとlastnameカラムのデータをNullに変更します。
DELETE firstname, lastname FROM cycling.cyclist_name WHERE id = e7ae5cf3-d358-4d99-b900-85902fda9bb0;
行全体の削除
DELETEの後にカラム名を入力しないと、条件に一致する行全体が削除されます。サイクリスト・エントリーをcyclist_nameテーブルから削除し、条件に一致する行がない場合はエラーを返します。
DELETE FROM cycling.cyclist_name WHERE id=e7ae5cf3-d358-4d99-b900-85902fda9bb0 IF EXISTS;
IF
はWHERE句を制限し、非PRIMARY KEYカラム(firstnameやlastnameなど)の値に基づく選択を可能にします。firstnameとlastnameが条件に一致していない場合はサイクリスト・レコードを削除します。
DELETE FROM cycling.cyclist_name WHERE id =e7ae5cf3-d358-4d99-b900-85902fda9bb0 if firstname='Alex' and lastname='Smith';
結果にはすべてのデータが表示されます。
[applied] | firstname | lastname
-----------+-----------+----------
False | Alex | FRAME
カラムの条件付き削除
IFまたはIF EXISTSを使用して、条件付きでカラムを削除できます。カラムの削除は、条件付きで挿入または更新することに似ています。
指定した行が存在しない場合に処理が実行されないようにするには、IF EXISTSをコマンドに追加します。
DELETE id FROM cyclist_id WHERE lastname = 'WELTEN' and firstname = 'Bram' IF EXISTS;
IF EXISTSを使用しない場合、コマンドは標準出力なしで続行されます。IF EXISTSがtrueを返す場合(このプライマリ・キーを含む行が存在する場合)、以下のようなテーブルが標準出力で表示されます。
一方、そのような行が存在しない場合は、条件によってFALSEが返され、コマンドは失敗します。この場合、標準出力は次のようになります。
DELETE id FROM cyclist_id WHERE lastname = 'WELTEN' AND firstname = 'Bram' IF age = 2000;すべての条件がTRUEを返す場合の標準出力は、IF EXISTSがtrueを返した場合(上記を参照)と同じになります。いずれかの条件が失敗した場合の標準出力には、
[applied]
カラムにFalse
と表示され、失敗した条件に関する情報も表示されます。条件付き削除は、多大なパフォーマンス・コストが発生するので、慎重に使用する必要があります。
TIMESTAMPを使用した古いデータの削除
TIMESTAMPはマイクロ秒を表す整数です。TIMESTAMPを使用して、削除するカラムを識別できます。
DELETE firstname, lastname FROM cycling.cyclist_name USING TIMESTAMP 1318452291034 WHERE lastname = 'VOS';
複数の行の削除
WHERE句で、テーブルから削除する行を指定します。
DELETE FROM cycling.cyclist_name WHERE id = 6ab09bec-e68e-48d9-a5f8-97e6fb4c9b47;
複数の行を削除するには、キーワードINを使用して、値のコンマ区切りリストを丸かっこで囲んで指定します。
DELETE FROM cycling.cyclist_name WHERE firstname IN ('Alex', 'Marianne');
CQLでは、空の値リストをIN句で使用できます。これは、Javaドライバー・アプリケーションで役立ちます。
コレクション・セット、リスト、またはマップからの削除
行の1カラムとして格納されている要素をマップから削除するには、column_nameの後に、要素のキーを角かっこで囲んで指定します。
DELETE sponsorship ['sponsor_name'] FROM cycling.races WHERE race_name = 'Criterium du Dauphine';
リストから要素を削除するには、column_nameの後に、リスト・インデックス位置を角かっこで囲んで指定します。
DELETE categories[3] FROM cycling.cyclist_history WHERE lastname = 'TIRALONGO';
セットからすべての要素を削除するには、column_nameを単独で指定します。
DELETE sponsorship FROM cycling.races WHERE race_name = 'Criterium du Dauphine';