功能描述

本功能允许用户通过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:指定字段添加的位置,可以添加到字段之前或之后。

使用示例

  1. 添加普通字段:

    ALTER TABLE my_table ADD COLUMN new_column INT;
  2. 添加复杂类型字段:

    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 ... ]

使用示例

  1. 删除普通字段:

    ALTER TABLE my_table DROP COLUMN old_column;
  2. 删除复杂类型字段:

    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;

使用示例

  1. 重命名普通字段:

    ALTER TABLE my_table RENAME COLUMN old_name TO new_name;
  2. 重命名复杂类型字段:

    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\tosmallintintbigintfloatdoubledecimaldatevarcharcharstring
tinyint☑️☑️☑️
smallint☑️☑️☑️
int☑️☑️
bigint☑️
float☑️☑️
double☑️
decimal支持整数位和小数位同时精度变大
Date☑️
Varchar允许变得更长☑️
Char允许变得更长☑️
String

联系我们
预约咨询
微信咨询
电话咨询