Skip to content

修改表

修改当前/指定模式下现有表的属性、列或约束。

有关更多详细信息,请参见Snowflake 文档Iceberg 文档

目前,BodoSQL仅支持以下操作:

重命名表

ALTER TABLE [ IF EXISTS ] <name> RENAME TO <new_table_name>

添加列

ALTER TABLE [ IF EXISTS ] <name> 
    ADD [ COLUMN ] [ IF NOT EXISTS ] <new_column_name> <column_datatype>
Warning
  • 此操作目前仅支持Iceberg。

  • 仅支持部分 Iceberg 类型用于 ADD COLUMN。与 Iceberg 类型对应的语法如下:

    语法 冰山类型
    十进制, 数字 decimal(38, 0)
    数字(P, S), 十进制(P, S) 十进制(p, s)
    整型, 整数型, 小整型, 微整型, 字节整型 int
    大整数 长整型
    浮点数, 浮点数4, 浮点数8 浮点数
    双精度, 双精度类型, 实数 double
    VARCHAR, CHAR, CHARACTER, STRING, TEXT, BINARY, VARBINARY 字符串
    布尔值 boolean
    日期 date
    时间 time
    日期时间, 时间戳, 无时区时间戳 时间戳

    请注意,添加嵌套类型,如 struct,尚不支持。因此,禁止使用包含句点的列名以防止歧义。

删除列

ALTER TABLE [ IF EXISTS ] <name> 
    DROP [ COLUMN ] [ IF EXISTS ] <column_name> [ , <column_name>, ...]
Note
  • 此操作目前仅支持Iceberg。

  • DROP COLUMN 可用于删除嵌套列和结构体的字段。

    为了做到这一点,使用 . 分隔的字段名称:

    -- Example
    ALTER TABLE tblname DROP COLUMN colname.fieldname
    

    也支持多个嵌套列:

    -- Example
    ALTER TABLE tblname DROP COLUMN colname.structname.fieldname
    

重命名列

ALTER TABLE [ IF EXISTS ] <name> 
    RENAME COLUMN <column_name> TO <new_column_name>
Note
  • 此操作当前仅支持 Iceberg。
  • 嵌套列也可以重命名。例如,
    ALTER TABLE table1 RENAME COLUMN column1.field1 TO field2
    
    将嵌套字段 field1column1 结构中重命名为 field2

修改列

ALTER TABLE [ IF EXISTS ] <name>
    ALTER [ COLUMN ] <column_name> alterColumnAction

目前,支持以下alterColumnAction选项:

设置列注释

ALTER TABLE [ IF EXISTS ] <name>
    ALTER [ COLUMN ] <column_name> COMMENT 'comment_string'

更改列的可空性

ALTER TABLE [ IF EXISTS ] <name>
    ALTER [ COLUMN ] <column_name> DROP NOT NULL

这将把一个必需的列(一个不能包含NULL值的列)变为一个可选的列。

注意

目前仅支持所有 ALTER COLUMN 操作用于 Iceberg。

设置 / 取消设置表属性

ALTER TABLE SET 用于设置全表属性。如果某个特定属性已经设置,这将用新值覆盖旧值。ALTER TABLE UNSET 用于删除表属性。

注意

此操作目前仅支持Iceberg。

ALTER TABLE [ IF EXISTS ] <name> 
    SET ( PROPERTY | PROPERTIES | TAG | TAGS | TBLPROPERTY | TBLPROPERTIES ) 
    '<tag_name>' = '<tag_value>' [ , '<tag_name>' = '<tag_value>' ... ]
ALTER TABLE [ IF EXISTS ] <name> 
    UNSET ( PROPERTY | PROPERTIES | TAG | TAGS | TBLPROPERTY | TBLPROPERTIES ) 
    [ IF EXISTS ] '<tag_name>'[ , '<tag_name>' ... ]

设置 / 取消设置表注释

此操作作为 ALTER TABLE SET PROPERTY COMMENT='comment' 的别名。

注意

此操作目前仅支持Iceberg。

ALTER TABLE [ IF EXISTS ] <name> SET COMMENT '<comment>'
ALTER TABLE [ IF EXISTS ] <name> UNSET COMMENT