功能描述
本功能允许用户通过ALTER语句对表中的列进行修改,包括添加列、修改列、删除列以及重命名列。同时支持复杂类型的变化,如struct、array和map等。
添加字段
语法
-- 添加列
ALTER TABLE table_name ADD COLUMN
column1_name_identifier data_type [COMMENT comment]
[FIRST | AFTER column1_name_identifier | BEFORE column1_name_identifier ] ,....
column_name_identifier :==
-- 普通字段
column_name
-- 复杂类型struct表示方法
-- struct类型struct,<x: double, y: double>
column_name.struct_column_name
-- array类型嵌套struct表示方法
-- 添加字段,array<struct<x: double, y: double>>
column_name.ELEMENT.struct_column_name
--map类型嵌套struct表示方法
--map key 添加字段
column_name.KEY.struct_column_name
--map value添加字段
column_name.VALUE.struct_column_name
参数说明
- column_name_identifier:字段标识符,用于指定添加、删除或重命名的字段名。
- FIRST | AFTER column_name_identifier:指定字段添加的位置,可以添加到字段之前或之后。
使用示例
-
添加普通字段:
ALTER TABLE my_table ADD COLUMN new_column INT;
-
添加复杂类型字段:
CREATE TABLE my_complex_table (
point STRUCT<x: INT, y: DOUBLE>,
points ARRAY<STRUCT<x: DOUBLE, y: DOUBLE>>,
points_map MAP<STRUCT<x: INT>, STRUCT<a: INT>>
);
-- 在struct中添加字段
ALTER TABLE my_complex_table ADD COLUMN point.z DOUBLE;
--map value中struct添加字段
ALTER TABLE my_complex_table ADD COLUMN points_map.value.b INT;
--map key中struct添加字段
ALTER TABLE my_complex_table ADD COLUMN points_map.key.y INT;
--array中struct添加字段
ALTER TABLE my_complex_table ADD COLUMN points.element.z DOUBLE;
删除字段
语法
ALTER TABLE table_name DROP COLUMN column_name_identifier [, column_name_identifier ... ]
使用示例
-
删除普通字段:
ALTER TABLE my_table DROP COLUMN old_column;
-
删除复杂类型字段:
ALTER TABLE my_complex_table DROP COLUMN point.z;
ALTER TABLE my_complex_table DROP COLUMN points.element.y;
ALTER TABLE my_complex_table DROP COLUMN points_map.key.x;
重命名字段
语法
ALTER TABLE table_name RENAME COLUMN column_name_identifier TO new_column_name_identifier;
使用示例
-
重命名普通字段:
ALTER TABLE my_table RENAME COLUMN old_name TO new_name;
-
重命名复杂类型字段:
ALTER TABLE my_complex_table RENAME COLUMN point.x TO xx;
ALTER TABLE my_complex_table RENAME COLUMN points.element.x TO xx;
ALTER TABLE my_complex_table RENAME COLUMN points_map.key.x TO xx;
修改字段
语法
-- 修改字段位置
ALTER TABLE table_name CHANGE COLUMN column_name_identifier { FIRST | AFTER column_identifier }
-- 修改字段类型
ALTER TABLE table_name CHANGE COLUMN column_name_identifier TYPE data_type
-- 修改字段注释
ALTER TABLE table_name CHANGE COLUMN column_name_identifier COMMENT 'comment'
当前支持的类型转换
| | | | | | | | | | |
---|
from\to | smallint | int | bigint | float | double | decimal | date | varchar | char | string |
tinyint | ☑️ | ☑️ | ☑️ | | | | | | | |
smallint | ☑️ | ☑️ | ☑️ | | | | | | | |
int | | ☑️ | ☑️ | | | | | | | |
bigint | | | ☑️ | | | | | | | |
float | | | | ☑️ | ☑️ | | | | | |
double | | | | | ☑️ | | | | | |
decimal | | | | | | 支持整数位和小数位同时精度变大 | | | | |
Date | | | | | | | ☑️ | | | |
Varchar | | | | | | | | 允许变得更长 | | ☑️ |
Char | | | | | | | | | 允许变得更长 | ☑️ |
String | | | | | | | | | | |