DELETE
行全体を、または1つ以上の行から1つ以上のカラムを削除します。
行全体を、または1つ以上の行から1つ以上のカラムを削除します。
構文
DELETE column_name, ...|(column_name term)FROM keyspace_name.table_name USING TIMESTAMP integer WHERE row_specification(IF( EXISTS |( condition( AND condition). . .) ) )
termは以下のとおりです。
[ list_position ] | key_value
row_specificationは以下のいずれかです。
primary_key_name = key_value primary_key_name IN ( key_value, key_value, ...)
column_name = key_value | column_name [list_position] = key_value
構文の凡例
- 大文字はリテラルを意味する
- 小文字は、リテラルでないことを意味する
- イタリック体は指定が任意であることを意味する
- パイプ(|)記号はORまたはAND/ORを意味する
- 省略記号(...)は繰り返し可能を意味する
- 範囲記号「(」および「)」はリテラルではなく、範囲を示す
この構文には、CQL文の終了となるセミコロンは含まれていません。
説明
DELETE文は、1つ以上のカラムをテーブル内の1つ以上の行から削除するか、またはカラムが指定されていない場合は、行全体を削除します。Cassandraでは、同じパーティション・キー内の選択をアトミックかつ個別に適用します。
カラムまたは行の削除
DELETEキーワードの後に、カラム名をコンマで区切ってリストすることもできます。
DELETE col1, col2, col3 FROM Planeteers WHERE userID = 'Captain';
カラム名を指定しないと、WHERE句で指定した行全体が削除されます。
DELETE FROM MastersOfTheUniverse WHERE mastersID IN ('Man-At-Arms', 'Teela');
カラムを削除しても、ディスクからはすぐに削除されません。削除されたカラムはトゥームストーンでマークされ、構成した猶予期間が経過すると削除されます。任意指定のタイムスタンプは、新しいトゥームストーン・レコードを定義します。
カラムの条件付き削除
Cassandra 2.0.7以降では、IFまたはIF EXISTSを使用してカラムを条件付きで削除できます。カラムの削除は、条件付きで挿入または更新することに似ています。条件付き削除は、多大なパフォーマンス・コストが発生するので、慎重に使用する必要があります。
テーブルの指定
テーブル名は、カラム名のリストとキーワードFROMの後に指定します。
古いデータの削除
タイムスタンプを使用して、削除するカラムを識別できます。
DELETE email, phone FROM users USING TIMESTAMP 1318452291034 WHERE user_name = 'jsmith';
TIMESTAMP入力はマイクロ秒を表す整数です。WHERE句では、テーブルから削除する行を指定します。
DELETE col1 FROM SomeTable WHERE userID = 'some_key_value';
以下の形式では、IN表記と、かっこで囲まれたコンマ区切りのキー名のリストを使用して、キー名のリストを指定しています。
DELETE col1 FROM SomeTable WHERE userID IN (key1, key2); DELETE phone FROM users WHERE user_name IN ('jdoe', 'jsmith');
Cassandra 2.0以降、CQLでは、IN句に値の空のリストを使用できるようになりました。Javaドライバー・アプリケーションで空の配列をIN句の引数として渡す場合に役立ちます。
コレクション・セット、リスト、またはマップの使用
マップから要素を削除するには、DELETEコマンドを使用し、要素のキーを大かっこで囲んで指定します。
DELETE todo ['2012-9-24'] FROM users WHERE user_id = 'frodo';
リストから要素を削除するには、DELETEコマンドを使用し、リストのインデックス位置を大かっこで囲んで指定します。
DELETE top_places[3] FROM users WHERE user_id = 'frodo';
セットからすべての要素を削除するには、DELETE文を使用します。
DELETE emails FROM users WHERE user_id = 'frodo';