目录
当前位置: 首页 > 教程 > Cassandra >

Cassandra修改表

精华
小牛编辑
184浏览
2023-03-14

ALTER TABLE命令用于在创建表后更改表。 您可以使用ALTER命令执行两种操作:

  • 添加一列
  • 删除一列

语法:

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

添加一列

您可以使用ALTER命令在表中添加一列。 在添加列时,您必须知道列名称与现有列名称不冲突,并且表不使用紧凑存储选项进行定义。
语法:

ALTER TABLE table name  
ADD new column datatype;

示例:

现在举个例子来说明在已经创建的名为“student”的表上使用ALTER命令。 这里我们在名为student的表中添加一个名为student_email的文本数据类型列。

使用以下命令后:

ALTER TABLE student ADD student_email text;

执行上面命令添加一个新列。 您可以使用SELECT命令检查它。

cqlsh> use yiibai_ks;
cqlsh:yiibai_ks>
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_fees | student_name | student_phone
------------+--------------+--------------+--------------+---------------

(0 rows)
cqlsh:yiibai_ks> ALTER TABLE student ADD student_email text;
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_email | student_fees | student_name | student_phone
------------+--------------+---------------+--------------+--------------+---------------

(0 rows)
cqlsh:yiibai_ks>

删除一列

您还可以使用ALTER命令从表中删除现有的列。 在从表中删除列之前,应该检查表是否没有使用紧凑存储选项进行定义。

语法:

ALTER table name  DROP column name;

示例:

让我们举个例子,从名为student的表中删除一个名为student_email的列。

使用以下命令后:

ALTER TABLE student DROP student_email;

现在,您可以看到student表中名为“student_email”的列现在已被删除。如果要删除多个列,请使用“”分隔列名。

cqlsh:yiibai_ks> ALTER TABLE student ADD student_email text;
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_email | student_fees | student_name | student_phone
------------+--------------+---------------+--------------+--------------+---------------

(0 rows)
cqlsh:yiibai_ks> ALTER TABLE student DROP student_email;
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_fees | student_name | student_phone
------------+--------------+--------------+--------------+---------------

(0 rows)
cqlsh:yiibai_ks>

看这个例子:

这里我们将删除以下两列:student_feesstudent_phone

ALTER TABLE student DROP (student_fees, student_phone);

输出结果如下所示 -

cqlsh:yiibai_ks> ALTER TABLE student DROP student_email;
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_fees | student_name | student_phone
------------+--------------+--------------+--------------+---------------

(0 rows)
cqlsh:yiibai_ks> ALTER TABLE student DROP (student_fees, student_phone);
cqlsh:yiibai_ks> select * from student;

 student_id | student_city | student_name
------------+--------------+--------------

(0 rows)
cqlsh:yiibai_ks>