Cassandra - Cập nhật dữ liệu

Cập nhật dữ liệu trong bảng

UPDATElà lệnh dùng để cập nhật dữ liệu trong bảng. Các từ khóa sau được sử dụng khi cập nhật dữ liệu trong bảng:

  • Where - Mệnh đề này dùng để chọn hàng được cập nhật.

  • Set - Đặt giá trị bằng từ khóa này.

  • Must - Bao gồm tất cả các cột tạo khóa chính.

Trong khi cập nhật hàng, nếu một hàng nhất định không khả dụng, thì CẬP NHẬT sẽ tạo một hàng mới. Dưới đây là cú pháp của lệnh UPDATE -

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

Thí dụ

Giả sử có một bảng có tên emp. Bảng này lưu trữ thông tin chi tiết về nhân viên của một công ty nhất định và nó có các chi tiết sau:

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Bây giờ chúng ta hãy cập nhật emp_city của robin đến Delhi và mức lương của anh ấy lên 50000. Dưới đây là truy vấn để thực hiện các cập nhật cần thiết.

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

xác minh

Sử dụng câu lệnh SELECT để xác minh xem dữ liệu đã được cập nhật hay chưa. Nếu bạn xác minh bảng emp bằng câu lệnh SELECT, nó sẽ tạo ra kết quả sau.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

Ở đây bạn có thể quan sát dữ liệu bảng đã được cập nhật.

Cập nhật dữ liệu bằng Java API

Bạn có thể cập nhật dữ liệu trong bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để cập nhật dữ liệu trong bảng bằng Java API.

Bước 1: Tạo một đối tượng cụm

Tạo một phiên bản của Cluster.builder lớp com.datastax.driver.core gói như hình dưới đây.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Thêm điểm liên hệ (địa chỉ IP của nút) bằng cách sử dụng addContactPoint() phương pháp của Cluster.Buildervật. Phương thức này trả vềCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Sử dụng đối tượng trình tạo mới, tạo một đối tượng cụm. Để làm như vậy, bạn có một phương thức được gọi làbuild() bên trong Cluster.Builderlớp học. Sử dụng mã sau để tạo đối tượng cụm.

//Building a cluster
Cluster cluster = builder.build();

Bạn có thể xây dựng đối tượng cụm bằng một dòng mã như hình dưới đây.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Bước 2: Tạo một đối tượng phiên

Tạo một thể hiện của đối tượng Session bằng phương thức connect () của lớp Cluster như hình bên dưới.

Session session = cluster.connect( );

Phương thức này tạo một phiên mới và khởi tạo nó. Nếu bạn đã có một keyspace, thì bạn có thể đặt nó thành keyspace hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi vào phương thức này như được hiển thị bên dưới.

Session session = cluster.connect(“ Your keyspace name”);

Ở đây chúng tôi đang sử dụng KeySpace có tên tp. Do đó, hãy tạo đối tượng phiên như hình dưới đây.

Session session = cluster.connect(“tp”);

Bước 3: Thực thi truy vấn

Bạn có thể thực hiện các truy vấn CQL bằng cách sử dụng phương thức execute () của lớp Session. Truyền truy vấn ở định dạng chuỗi hoặc dưới dạng đối tượng lớp Statement đến phương thức execute (). Bất cứ điều gì bạn chuyển đến phương thức này ở định dạng chuỗi sẽ được thực thi trêncqlsh.

Trong ví dụ sau, chúng tôi đang cập nhật bảng trống. Bạn phải lưu trữ truy vấn trong một biến chuỗi và chuyển nó vào phương thức execute () như hình dưới đây:

String query = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

Dưới đây là chương trình hoàn chỉnh để cập nhật dữ liệu trong bảng bằng Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

Lưu chương trình trên với tên lớp theo sau là .java, duyệt đến vị trí lưu nó. Biên dịch và thực thi chương trình như hình dưới đây.

$javac Update_Data.java
$java Update_Data

Trong điều kiện bình thường, nó sẽ tạo ra sản lượng sau:

Data updated