描述
ALTER TABLE ... ADD COLUMNS 语句用于向已有表中添加一列或多列。可以同时添加多个列(逗号分隔),也可以指定列的位置(FIRST 或 AFTER 某列之后)。语法
ALTER TABLE table_nameADD COLUMNS ( col_spec [ , col_spec ] ... )-- 其中 col_spec 定义为:col_spec := column_name data_type [ NOT NULL ] [ COMMENT 'comment' ]| column_name data_type [ NOT NULL ] [ COMMENT 'comment' ] FIRST| column_name data_type [ NOT NULL ] [ COMMENT 'comment' ] AFTER other_column
参数说明
子句/关键字 | 用途 | 说明 |
column_name | 新列名 | 必须符合标识符命名规则 |
data_type | 列数据类型 | 支持 BIGINT、STRING、DOUBLE、TIMESTAMP、BOOLEAN 等 |
NOT NULL | 非空约束 | 指定列不允许为空值 |
COMMENT | 列注释 | 记录列的业务含义 |
FIRST | 插入位置 | 将新列添加到表的第一位(最左) |
AFTER column_name | 插入位置 | 将新列添加到指定列之后 |
注意事项
添加列是纯元数据操作,不会影响已有数据。
Map 类型只能向 value 结构体添加字段,不能向 key 添加字段。示例
创建基础表
DROP TABLE IF EXISTS tci_add_col;CREATE TABLE tci_add_col (id BIGINT NOT NULL,name STRING) USING tciTBLPROPERTIES ('primary-key' = 'id');
添加单列
ALTER TABLE tci_add_colADD COLUMNS (age INT COMMENT '年龄');
同时添加多列
ALTER TABLE tci_add_colADD COLUMNS (email STRING COMMENT '邮箱',created_at TIMESTAMP COMMENT '创建时间');
FIRST 添加到第一列
ALTER TABLE tci_add_colADD COLUMN seq_no BIGINT FIRST;
AFTER 添加到指定列之后
ALTER TABLE tci_add_colADD COLUMN nickname STRING AFTER name;
DESCRIBE 最终结构
DESCRIBE tci_add_col;
添加带 NOT NULL 的列 + 写入读取验证
ALTER TABLE tci_add_colADD COLUMN active BOOLEAN NOT NULL DEFAULT true;INSERT INTO tci_add_colVALUES (1, 'test_user', 25, 'test@test.com', TIMESTAMP('2025-01-01 00:00:00'), 100, 'nick', true);SELECT id, name, age, nickname FROM tci_add_col;