Cassandra修改表

ALTER TABLE命令用於在創建表後更改表。 您可以使用ALTER命令執行兩種操作:

  • 添加一列
  • 刪除一列

語法:

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

添加一列

您可以使用ALTER命令在表中添加一列。 在添加列時,您必須知道列名稱與現有列名稱不衝突,並且表不使用緊湊存儲選項進行定義。
語法:

ALTER TABLE table name  
ADD new column datatype;

示例:

現在舉個例子來說明在已經創建的名爲「student」的表上使用ALTER命令。 這裏我們在名爲student的表中添加一個名爲student_email的文本數據類型列。

Cassandra修改表

使用以下命令後:

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>