在Cassandra中,BATCH
用于同时执行多个修改语句(插入,更新,删除)。 当你必须更新一些以及删除一些现有的列是非常有用的。
语法
BEGIN BATCH <insert-stmt>/ <update-stmt>/ <delete-stmt> APPLY BATCH
实例:
让我们举个例子来演示BATCH
命令。 在这里,我们有一个名为“student
”的表,其中包含列(student_id
,student_fees
,student_name
),具有以下数据。
在这个例子中,我们将执行BATCH(插入,更新和删除)操作:
4
,4000
,Sumsu
)。3
的学生的student_fees
列的值为8000
。2
的雇员的student_fees
值。完整的语句如下所示 -
## 创建表 CREATE TABLE student( student_id int PRIMARY KEY, student_name text, student_fees varint ); ## 插入数据 INSERT INTO student (student_id, student_fees, student_name) VALUES(1,5000, 'Maxsu'); INSERT INTO student (student_id, student_fees, student_name) VALUES(2,3000, 'Minsu'); INSERT INTO student (student_id, student_fees, student_name) VALUES(3, 2000, 'Modlee');
查询数据结果如下 -
cqlsh:zyiz_ks> select * from student; student_id | student_fees | student_name ------------+--------------+-------------- | 5000 | Maxsu | 3000 | Minsu | 2000 | Modlee (3 rows) cqlsh:zyiz_ks>
执行BATCH
命令 -
BEGIN BATCH INSERT INTO student(student_id, student_fees, student_name) values(4, 5500, Sumlee); UPDATE student SET student_fees=8000 WHERE student_id=3; DELETE student_fees FROM student WHERE student_id=2; APPLY BATCH;
现在执行了BATCH
命令之后。 您可以使用SELECT命令验证它。
cqlsh:zyiz_ks> BEGIN BATCH ... INSERT INTO student(student_id, student_fees, student_name) values(4, 5500, 'Sumlee'); ... UPDATE student SET student_fees=8000 WHERE student_id=3; ... DELETE student_fees FROM student WHERE student_id=2; ... APPLY BATCH; cqlsh:zyiz_ks> SELECT * FROM student; student_id | student_fees | student_name ------------+--------------+-------------- | 5000 | Maxsu | null | Minsu | 5500 | Sumlee | 8000 | Modlee (4 rows) cqlsh:zyiz_ks>