ADD COLUMN(S)

最近更新时间:2026-05-20 14:11:21

我的收藏

描述

ALTER TABLE ... ADD COLUMNS 语句用于向已有表中添加一列或多列。可以同时添加多个列(逗号分隔),也可以指定列的位置(FIRSTAFTER 某列之后)。

语法

ALTER TABLE table_name
ADD 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
列数据类型
支持 BIGINTSTRINGDOUBLETIMESTAMPBOOLEAN
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 tci
TBLPROPERTIES ('primary-key' = 'id');

添加单列

ALTER TABLE tci_add_col
ADD COLUMNS (age INT COMMENT '年龄');

同时添加多列

ALTER TABLE tci_add_col
ADD COLUMNS (
email STRING COMMENT '邮箱',
created_at TIMESTAMP COMMENT '创建时间'
);

FIRST 添加到第一列

ALTER TABLE tci_add_col
ADD COLUMN seq_no BIGINT FIRST;

AFTER 添加到指定列之后

ALTER TABLE tci_add_col
ADD COLUMN nickname STRING AFTER name;

DESCRIBE 最终结构

DESCRIBE tci_add_col;

添加带 NOT NULL 的列 + 写入读取验证

ALTER TABLE tci_add_col
ADD COLUMN active BOOLEAN NOT NULL DEFAULT true;

INSERT INTO tci_add_col
VALUES (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;