Cassandra クエリ言語(CQL): Insert Into、Update (例)
データの挿入
当学校区の Cassandra insert ステートメントはデータを書き込みます Cassandra 行形式の列。 Cassandra 挿入クエリは、ユーザーによって指定された列のみを保存します。必ず主キー列のみを指定する必要があります。
指定されていない値のためのスペースは必要ありません。 挿入後に結果は返されません。
構文
Insert into KeyspaceName.TableName(ColumnName1, ColumnName2, ColumnName3 . . . .) values (Column1Value, Column2Value, Column3Value . . . .)
例
これが実行されたスナップショットです Cassandra 1 つのレコードを挿入するテーブルクエリに挿入します。 Cassandra テーブル「学生」。
Insert into University.Student(RollNo,Name,dept,Semester) values(2,'Michael','CS', 2);
コマンドが正常に実行された後、Insert into Cassandraに 1 行が挿入されます。 Cassandra 表 ロール番号 2 の学生、名前はマイケル、部門 CS、学期 2。
これは、現在のデータベース状態のスナップショットです。
データの更新/挿入
Cassandra アップサートを行います。アップサートとは次のことを意味します Cassandra 主キーがまだ存在しない場合は行を挿入し、主キーがすでに存在する場合はその行を更新します。
Update Data
当学校区の Cassandra 更新クエリは、 Cassandra テーブルデータの更新後に結果が返されない場合は、データが正常に更新されたことを意味します。そうでない場合は、エラーが返されます。列の値は 'Set' 句で変更され、データは 'Where' 句でフィルター処理されます。
構文
Update KeyspaceName.TableName Set ColumnName1=new Column1Value, ColumnName2=new Column2Value, ColumnName3=new Column3Value, . . . Where ColumnName=ColumnValue
例
以下は、データを更新する前のデータベースの状態を示すスクリーンショットです。
これが実行されたスナップショットです Cassandra Student テーブルのレコードを更新する Update コマンド。
Update University.Student Set name='Hayden' Where rollno=1;
で更新クエリが正常に実行された後、 Cassandra 「学生を更新」すると、学生名が「Clark」からロール番号 1 の「Hayden」に変更されます。
データ更新後のデータベースの状態を示すスクリーンショットは次のとおりです。
Cassandra データの削除
コマンド「削除」は、テーブル Student から行全体または一部の列を削除します。 データが削除されても、テーブルからすぐには削除されません。 代わりに、削除されたデータには廃棄マークが付けられ、圧縮後に削除されます。
構文
Delete from KeyspaceName.TableName Where ColumnName1=ColumnValue
上記 Cassandra delete row 構文は、where 句のデータ フィルタリングに応じて 1 つ以上の行を削除します。
Delete ColumnNames from KeyspaceName.TableName Where ColumnName1=ColumnValue
上記の構文はテーブルからいくつかの列を削除します。
例
以下は、データを削除する前の現在のデータベースの状態を示すスナップショットです。
以下は、Student テーブルから XNUMX 行を削除するコマンドのスナップショットです。
Delete from University.Student where rollno=1;
CQL 削除コマンドが正常に実行されると、ロール番号値が 1 である Student テーブルから XNUMX 行が削除されます。
以下は、データ削除後のデータベースの状態を示すスナップショットです。
この試験は Cassandra サポートしていません。
以下の制限があります Cassandra クエリ言語 (CQL)。
- CQLはmax、min、avgなどの集計クエリをサポートしていません
- CQL は、クエリによるグループ化をサポートしていません。
- CQL は結合をサポートしていません。
- CQL は OR クエリをサポートしていません。
- CQL はワイルドカード クエリをサポートしていません。
- CQL は、Union クエリや Intersection クエリをサポートしていません。
- インデックスを作成しないとテーブルの列をフィルタリングできません。
- より大きい (>) およびより小さい (<) クエリは、クラスタリング列でのみサポートされます。 Cassandra クエリ言語には多くの制限があるため、分析目的には適していません。
Cassandra Where句
In Cassandra、データの取得はデリケートな問題です。列は次でフィルタリングされます Cassandra 非主キー列にインデックスを作成することによって。
構文
Select ColumnNames from KeyspaceName.TableName Where ColumnName1=Column1Value AND ColumnName2=Column2Value AND . . .
例
- 以下は、データ フィルタリングを行わない Student テーブルからのデータ取得を示すスナップショットです。
select * from University.Student;
Student テーブルから XNUMX つのレコードが取得されます。
- 以下は、データ フィルタリングを使用した Student からのデータ取得を示すスナップショットです。 XNUMX つのレコードが取得されます。
データは名前列によってフィルターされます。 Guru99 と等しい名前を持つすべてのレコードが取得されます。
select * from University. Student where name='Guru99';