Cassandra - Bàn thay thế

Thay đổi bảng

Bạn có thể thay đổi bảng bằng lệnh ALTER TABLE. Dưới đây là cú pháp để tạo một bảng.

Cú pháp

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

Sử dụng lệnh ALTER, bạn có thể thực hiện các thao tác sau:

  • Thêm một cột

  • Thả một cột

Thêm một cột

Sử dụng lệnh ALTER, bạn có thể thêm một cột vào bảng. Trong khi thêm cột, bạn phải chú ý rằng tên cột không xung đột với tên cột hiện có và bảng không được xác định với tùy chọn lưu trữ nhỏ gọn. Dưới đây là cú pháp để thêm cột vào bảng.

ALTER TABLE table name
ADD  new column datatype;

Example

Dưới đây là một ví dụ để thêm một cột vào bảng hiện có. Ở đây chúng tôi đang thêm một cột có tên làemp_email kiểu dữ liệu văn bản cho bảng có tên emp.

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

Verification

Sử dụng câu lệnh SELECT để xác minh xem cột có được thêm vào hay không. Tại đây bạn có thể quan sát cột emp_email mới được thêm vào.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
--------+----------+-----------+----------+-----------+---------

Bỏ một cột

Sử dụng lệnh ALTER, bạn có thể xóa một cột khỏi bảng. Trước khi bỏ một cột khỏi bảng, hãy kiểm tra xem bảng đó không được xác định với tùy chọn lưu trữ nhỏ gọn. Dưới đây là cú pháp để xóa một cột khỏi bảng bằng lệnh ALTER.

ALTER table name
DROP column name;

Example

Dưới đây là một ví dụ để bỏ một cột khỏi một bảng. Ở đây chúng tôi đang xóa cột có tênemp_email.

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

Verification

Xác minh xem cột có bị xóa hay không bằng cách sử dụng select như hình dưới đây.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------
(0 rows)

Từ emp_email cột đã bị xóa, bạn không thể tìm thấy nó nữa.

Thay đổi bảng bằng Java API

Bạn có thể tạo một bảng bằng phương thức execute () của lớp Session. Làm theo các bước dưới đây để thay đổi bảng bằng Java API.

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

Trước hết, hãy 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. Đoạn mã sau đây cho thấy cách tạo một đối tượng cụm.

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

Bạn có thể xây dựng một đối tượng cụm bằng cách sử dụ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 không gian khóa, bạn có thể đặt nó thành một không gian hiện có bằng cách chuyển tên KeySpace ở định dạng chuỗi cho phương thức này như được hiển thị bên dưới.

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

Ở đâ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.

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 thêm một cột vào bảng có tên emp. Để làm như vậy, 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.

//Query
String query1 = "ALTER TABLE emp ADD emp_email text";
session.execute(query);

Dưới đây là chương trình hoàn chỉnh để thêm một cột vào bảng hiện có.

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

public class Add_column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp ADD emp_email text";

      //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("Column added");
   }
}

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 Add_Column.java $java Add_Column

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

Column added

Xóa một cột

Dưới đây là chương trình hoàn chỉnh để xóa một cột khỏi bảng hiện có.

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

public class Delete_Column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp DROP emp_email;";

      //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("Column deleted");
   }
 }

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 Delete_Column.java $java Delete_Column

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

Column deleted