大数据

Doris ALTER操作列

1、添加列,向指定的 index 位置进行列添加

ALTER TABLE [database.]table table_name ADD COLUMN column_name column_type [KEY | agg_type] [,→ DEFAULT "default_value"]
[AFTER column_name|FIRST]
[TO rollup_index_name]
[PROPERTIES ("key"="value", ...)]

示例:

-- 向example_db.my_table的key_1后添加一个key列new_col(非聚合模型)
ALTER TABLE example_db.my_table ADD COLUMN new_col INT KEY DEFAULT "0" AFTER key_1;

-- 向example_db.my_table的value_1后添加一个value列new_col(非聚合模型)
ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER value_1

-- 向example_db.my_table的value_1后添加一个value列new_col SUM聚合类型(聚合模型)
ALTER TABLE example_db.my_table ADD COLUMN new_col INT SUM DEFAULT "0" AFTER value_1;

2、添加多列,向指定的 index 位置进行多列添加语法

sql ALTER TABLE [database.]table table_name ADD COLUMN (column_name1 column_type [KEY | agg_type,→ ] DEFAULT "default_value", ...)[TO rollup_index_name] [PROPERTIES ("key"="value", ...)]

示例:

-- 向example_db.my_table中添加多列,new_col和new_col2都是SUM聚合类型(聚合模型)
ALTER TABLE example_db.my_table ADD COLUMN (new_col1 INT SUM DEFAULT "0", new_col2 INT SUM DEFAULT "0")

-- 向example_db.my_table中添加多列(非聚合模型),其中new_col1为KEY列,new_col2为value列
ALTER TABLE example_db.my_table ADD COLUMN (new_col1 INT key DEFAULT "0", new_col2 INT DEFAULT "0")

3、删除列,从指定 index 中删除一列

ALTER TABLE [database.]table table_name DROP COLUMN column_name [FROM rollup_index_name]

示例:

ALTER TABLE example_db.my_table DROP COLUMN col1;

4、修改指定列类型以及列位置

ALTER TABLE [database.]table table_name MODIFY COLUMN column_name column_type [KEY | agg_type] [,→ NULL | NOT NULL] [DEFAULT "default_value"]
[AFTER column_name|FIRST]
[FROM rollup_index_name]
[PROPERTIES ("key"="value", ...)]

示例:

-- 修改example_db.my_table的key列col1的类型为BIGINT,并移动到col2列后面
-- 无论是修改key列还是value列都需要声明完整的column信息。
ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1" AFTER col2;

-- 修改example_db.my_table的val1列最大长度,原val1为(val1 VARCHAR(32) REPLACE DEFAULT "abc")
-- 只能修改列的类型,列的其他属性维持原样
ALTER TABLE example_db.my_table MODIFY val1 VARCHAR(64) REPLACE DEFAULT "abc";

5、对指定表的列进行重新排序

ALTER TABLE [database.]table table_name ORDER BY (column_name1, column_name2, ...)[FROM,→ rollup_index_name] [PROPERTIES ("key"="value", ...)]

示例:

-- 调整example_db.my_table的key列和value列的顺序(非聚合模型)
-- 原顺序:k_1, k_2, v_1, v_2, v_3
ALTER TABLE example_db.my_table ORDER BY(k_2, k_1, v_3, v_2, v_1);