Cassandra修改表


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>