更新时间:2024-11-29 GMT+08:00
ALTER TABLE修改表结构
本章节主要介绍ClickHouse修改表结构的SQL基本语法和使用说明。
基本语法
ALTER TABLE [database_name].name [ON CLUSTER cluster] ADD|DROP|CLEAR|COMMENT|MODIFY COLUMN ...
ALTER仅支持 *MergeTree ,Merge以及Distributed等引擎表。
ALTER操作在副本之间异步执行,若需要修改结果返回策略,修改参数“profiles.default.replication_alter_partitions_sync”为:
- 0:异步执行
- 1:等待当前服务器执行完成
- 2:等待所有副本(如果存在)执行完成
当设置为2时,可修改profiles.default.replication_wait_for_inactive_replica_timeout规定等待的超时时间。
参数设置方法:
登录FusionInsight Manager页面,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”,在右上角搜索框中搜索“replication_alter_partitions_sync”,修改对应的参数值,保存配置。
使用示例
- 给表t1增加列test01:
ALTER TABLE t1 ADD COLUMN test01 String DEFAULT 'defaultvalue';
- 查询修改后的表t1:
desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ String │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ │ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
- 修改表t1列name类型为UInt8:
ALTER TABLE t1 MODIFY COLUMN name UInt8;
- 查询修改后的表t1:
desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ │ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
- 删除表t1的列test01:
ALTER TABLE t1 DROP COLUMN test01;
- 查询修改后的表t1:
desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
父主题: ClickHouse常用SQL语法