×

Cassandra 教程

Cassandra 简介Cassandra 架构Cassandra 数据模型Cassandra 安装Cassandra 参考APICassandra CqlshCassandra Shell命令

Cassandra 键空间操作

Cassandra 创建键空间Cassandra 修改键空间Cassandra 删除键空间

Cassandra 表操作

Cassandra 创建表Cassandra 修改表Cassandra 删除表Cassandra 截断表Cassandra 创建索引Cassandra 删除索引Cassandra 批处理

Cassandra CURD操作

Cassandra 创建数据Cassandra 更新数据Cassandra 读取数据Cassandra 删除数据

Cassandra CQL数据类型

Cassandra CQL数据类型Cassandra CQL集合Cassandra CQL用户定义的数据类型

Cassandra 相关资源

Cassandra 相关资源Cassandra 相关讨论

Cassandra 修改表


改变使用Cqlsh表

您可以使用命令ALTER TABLE更改表。下面给出了修改表的语法。

句法

ALTER (TABLE | COLUMNFAMILY)  

使用ALTER命令,可以执行以下操作:

  • 添加列

  • 删除列

添加列

使用ALTER命令,可以向表中添加列。在添加列时,必须注意,列名称不会与现有列名称冲突,并且表未使用紧凑存储选项定义。下面给出了向表中添加列的语法。

ALTER TABLE table name
ADD  new column datatype;

示例

下面给出了向现有表中添加列的示例。这里我们在名为emp的表中添加一个名为emp_email的文本数据类型的列。

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

验证

使用SELECT语句验证列是否已添加。在这里可以观察新添加的列emp_email。

cqlsh:bootwiki> 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:bootwiki> ALTER TABLE emp DROP emp_email;

验证

使用select语句验证列是否已删除,如下所示。

cqlsh:bootwiki> select * from emp;

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

由于emp_email列已删除,因此您无法再找到它。

使用Java API更改表

您可以使用Session类的execute()方法创建表。按照以下步骤使用Java API更改表。

第1步:创建集群对象

首先,创建一个名为com.datastax.driver.core的Cluster.builder类的实例,如下所示。

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

使用Cluster.Builder对象的addContactPoint()方法添加联系点(节点的IP地址)。此方法返回Cluster.Builder

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

使用新的构建器对象,创建一个集群对象。为此,在Cluster.Builder类中有一个名为build()的方法。以下代码显示如何创建集群对象。

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

您可以使用单行代码构建集群对象,如下所示。

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

第2步:创建会话对象

使用Cluster类的connect()方法创建一个Session对象的实例,如下所示。

Session session = cluster.connect( );

此方法创建一个新会话并初始化它。如果您已经有一个键空间,您可以通过将KeySpace名称以字符串格式传递到此方法来将其设置为现有键空间,如下所示。

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

这里我们使用KeySpace命名为tp。因此,创建会话对象如下所示。

第3步:执行查询

您可以使用Session类的execute()方法执行CQL查询。将查询以字符串格式或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

在正常条件下,它应该产生以下输出:

Column deleted

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)