Учебники

Кассандра — Alter Table

Вы можете изменить таблицу, используя команду ALTER TABLE . Ниже приведен синтаксис для создания таблицы.

Синтаксис

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

Используя команду ALTER, вы можете выполнить следующие операции:

  • Добавить столбец

  • Оставить столбец

Добавить столбец

Оставить столбец

Добавление столбца

Используя команду ALTER, вы можете добавить столбец в таблицу. При добавлении столбцов необходимо следить за тем, чтобы имя столбца не конфликтовало с существующими именами столбцов и чтобы таблица не была определена с опцией компактного хранения. Ниже приведен синтаксис добавления столбца в таблицу.

ALTER TABLE table name
ADD  new column datatype;

пример

Ниже приведен пример добавления столбца к существующей таблице. Здесь мы добавляем столбец с именем emp_email текстового типа данных в таблицу с именем emp .

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

верификация

Используйте оператор SELECT, чтобы проверить, добавлен столбец или нет. Здесь вы можете увидеть недавно добавленный столбец emp_email.

cqlsh:tutorialspoint> select * from emp;

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

Отбрасывание столбца

Используя команду ALTER, вы можете удалить столбец из таблицы. Перед удалением столбца из таблицы убедитесь, что таблица не определена с опцией компактного хранения. Ниже приведен синтаксис для удаления столбца из таблицы с помощью команды ALTER.

ALTER table name
DROP column name;

пример

Ниже приведен пример удаления столбца из таблицы. Здесь мы удаляем столбец с именем emp_email .

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

верификация

Убедитесь, что столбец удален, используя оператор выбора , как показано ниже.

cqlsh:tutorialspoint> select * from emp;

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

Так как столбец emp_email был удален, вы больше не можете его найти.

Изменение таблицы с использованием Java API

Вы можете создать таблицу с помощью метода execute () класса Session. Выполните шаги, приведенные ниже, чтобы изменить таблицу с помощью Java API.

Шаг 1: Создайте объект кластера

Прежде всего, создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

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

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

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

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Следующий код показывает, как создать объект кластера.

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

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

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

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

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

Здесь мы используем KeySpace с именем tp. Поэтому создайте объект сеанса, как показано ниже.

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В следующем примере мы добавляем столбец в таблицу с именем emp. Для этого необходимо сохранить запрос в строковой переменной и передать его в метод execute (), как показано ниже.

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

Ниже приведена полная программа для добавления столбца к существующей таблице.

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");
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Add_Column.java
$java Add_Column

В нормальных условиях он должен выдавать следующий результат:

Column added

Удаление столбца

Ниже приведена полная программа для удаления столбца из существующей таблицы.

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");
   }
 }

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Delete_Column.java
$java Delete_Column

В нормальных условиях он должен выдавать следующий результат: