小工具知识网

当前位置: 首页 > 行业知识 > 【StarRocks】数据结构和修改表语句大全

行业知识

【StarRocks】数据结构和修改表语句大全

2026-11-07 07:58:26 来源:互联网转载

StarRocks的改表语句

文章目录

    • StarRocks的改表语句
      • 1 数据类型
      • 2 修改表结构
      • 3 ���例

        1 数据类型

        2 修改表结构

        StarRocks 支持多种 DDL 操作。

        可以通过 ALTER TABLE 命令可以修改表的 Schema,包括增加列,删除列,修改列类型(暂不支持修改列名称),改变列顺序。

        1 增加列

        例如,在以上创建的表中,在 ispass 列后新增一列 uv,类型为 BIGINT,默认值为 0。

        ALTER TABLE detailDemo ADD COLUMN uv BIGINT DEFAULT '0' after ispass;

        2 删除列

        删除以上步骤新增的列。注意如果您通过上述步骤添加了 uv,请务必删除此列以保证后续 Quick Start 内容可以执行。

        ALTER TABLE detailDemo DROP COLUMN uv;

        3 查看修改表结构作业状态

        修改表结构为异步操作。提交成功后,您可以通过以下命令查看作业状态。

        SHOW ALTER TABLE COLUMN\G;

        当作业状态为 FINISHED,则表示作业完成,新的表结构修改已生效。

        修改 Schema 完成之后,您可以通过以下命令查看最新的表结构。

        DESC table_name;

        3 示例

        1 table

        修改表的默认副本数量,新建分区副本数量默认使用此值。

        ALTER TABLE example_db.my_tableSET ("default.replication_num" = "2");

        修改单分区表的实际副本数量(只限单分区表)。

        ALTER TABLE example_db.my_tableSET ("replication_num" = "3");

        修改数据在多副本间的写入和同步方式。

        ALTER TABLE example_db.my_tableSET ("replicated_storage" = "false");

        2 partition

        增加分区,现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式。

        ALTER TABLE example_db.my_tableADD PARTITION p1 VALUES LESS THAN ("2014-01-01");

        增加分区,使用新的分桶数。

        ALTER TABLE example_db.my_tableADD PARTITION p1 VALUES LESS THAN ("2015-01-01")DISTRIBUTED BY HASH(k1) BUCKETS 20;

        增加分区,使用新的副本数。

        ALTER TABLE example_db.my_tableADD PARTITION p1 VALUES LESS THAN ("2015-01-01")("replication_num"="1");

        修改分区副本数。

        ALTER TABLE example_db.my_tableMODIFY PARTITION p1 SET("replication_num"="1");

        批量修改指定分区。

        ALTER TABLE example_db.my_tableMODIFY PARTITION (p1, p2, p4) SET("in_memory"="true");

        批量修改所有分区。

        ALTER TABLE example_db.my_tableMODIFY PARTITION (*) SET("storage_medium"="HDD");

        删除分区。

        ALTER TABLE example_db.my_tableDROP PARTITION p1;

        增加一个指定上下界的分区。

        ALTER TABLE example_db.my_tableADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));

        3 rollup

        创建 index: example_rollup_index,基于 base index(k1, k2, k3, v1, v2)。列式存储。

        ALTER TABLE example_db.my_tableADD ROLLUP example_rollup_index(k1, k3, v1, v2)PROPERTIES("storage_type"="column");

        创建 index: example_rollup_index2,基于 example_rollup_index(k1, k3, v1, v2)。

        ALTER TABLE example_db.my_tableADD ROLLUP example_rollup_index2 (k1, v1)FROM example_rollup_index;

        创建 index: example_rollup_index3,基于 base index (k1, k2, k3, v1), 自定义 rollup 超时时间一小时。

        ALTER TABLE example_db.my_tableADD ROLLUP example_rollup_index(k1, k3, v1)PROPERTIES("storage_type"="column", "timeout" = "3600");

        删除 index: example_rollup_index2。

        ALTER TABLE example_db.my_tableDROP ROLLUP example_rollup_index2;

        4 Schema Change

        向 example_rollup_index 的 col1 后添加一个 key 列 new_col(非聚合模型)。

        ALTER TABLE example_db.my_tableADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1TO example_rollup_index;

        向 example_rollup_index 的 col1 后添加一个 value 列 new_col(非聚合模型)。

        ALTER TABLE example_db.my_tableADD COLUMN new_col INT DEFAULT "0" AFTER col1TO example_rollup_index;

        向 example_rollup_index 的 col1 后添加一个 key 列 new_col(聚合模型)。

        ALTER TABLE example_db.my_table

        ADD COLUMN new_col INT DEFAULT "0" AFTER col1TO example_rollup_index;

        向 example_rollup_index 的 col1 后添加一个 value 列 new_col SUM 聚合类型(聚合模型)。

        ALTER TABLE example_db.my_tableADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1TO example_rollup_index;

        向 example_rollup_index 添加多列(聚合模型)。

        ALTER TABLE example_db.my_tableADD COLUMN (col1 INT DEFAULT "1", col2 FLOAT SUM DEFAULT "2.3")TO example_rollup_index;

        从 example_rollup_index 删除一列。

        ALTER TABLE example_db.my_tableDROP COLUMN col2FROM example_rollup_index;

        修改 base index 的 col1 列的类型为 BIGINT,并移动到 col2 列后面。

        ALTER TABLE example_db.my_tableMODIFY COLUMN col1 BIGINT DEFAULT "1" AFTER col2;

        修改 base index 的 val1 列最大长度。原 val1 为 (val1 VARCHAR(32) REPLACE DEFAULT “abc”)。

        ALTER TABLE example_db.my_tableMODIFY COLUMN val1 VARCHAR(64) REPLACE DEFAULT "abc";

        重新排序 example_rollup_index 中的列(设原列顺序为:k1, k2, k3, v1, v2)。

        ALTER TABLE example_db.my_tableORDER BY (k3,k1,k2,v2,v1)FROM example_rollup_index;

        同时执行两种操作。

        ALTER TABLE example_db.my_tableADD COLUMN v2 INT MAX DEFAULT "0" AFTER k2 TO example_rollup_index,ORDER BY (k3,k1,k2,v2,v1) FROM example_rollup_index;

        修改表的 bloom filter 列。

        ALTER TABLE example_db.my_tableSET ("bloom_filter_columns"="k1,k2,k3");

        也可以合并到上面的 schema change 操作中(注意多子句的语法有少许区别)

        ALTER TABLE example_db.my_tableDROP COLUMN col2PROPERTIES ("bloom_filter_columns"="k1,k2,k3");

        修改表的 Colocate 属性。

        ALTER TABLE example_db.my_tableSET ("colocate_with" = "t1");

        将表的分桶方式由 Random Distribution 改为 Hash Distribution。

        ALTER TABLE example_db.my_tableSET ("distribution_type" = "hash");

        修改表的动态分区属性(支持未添加动态分区属性的表添加动态分区属性)。

        ALTER TABLE example_db.my_tableSET ("dynamic_partition.enable" = "false");

        如果需要在未添加动态分区属性的表中添加动态分区属性,则需要指定所有的动态分区属性。

        ALTER TABLE example_db.my_tableSET (    "dynamic_partition.enable" = "true",    "dynamic_partition.time_unit" = "DAY",    "dynamic_partition.end" = "3",    "dynamic_partition.prefix" = "p",    "dynamic_partition.buckets" = "32"    );

        修改表的 in_memory 属性。

        ALTER TABLE example_db.my_tableSET ("in_memory" = "true");

        5 rename

        将名为 table1 的表修改为 table2。

        ALTER TABLE table1 RENAME table2;

        将表 example_table 中名为 rollup1 的 rollup index 修改为 rollup2。

        ALTER TABLE example_table RENAME ROLLUP rollup1 rollup2;

        将表 example_table 中名为 p1 的 partition 修改为 p2。

        ALTER TABLE example_table RENAME PARTITION p1 p2;

        6 index

        在 table1 上为 siteid 创建 bitmap 索引。

        ALTER TABLE table1ADD INDEX index_name (siteid) [USING BITMAP] COMMENT 'balabala';

        删除 table1 上的 siteid 列的 bitmap 索引。

         

        7 swap

        将 table1 与 table2 原子替换。

        ALTER TABLE table1 SWAP WITH table2;

        改key语句

        修改指定 index 的列类型以及列位置 (MODIFY COLUMN)

        语法:

        ALTER TABLE [database.]tableMODIFY COLUMN column_name column_type [KEY | agg_type] [NULL | NOT NULL] [DEFAULT "default_value"][AFTER column_name|FIRST][FROM rollup_index_name][PROPERTIES ("key"="value", ...)]

上一篇:进浙备案账号申请不下来怎么办

下一篇:服务器喇叭怎么调音响频率?