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_fees
和student_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>