当前位置:   article > 正文

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

starrocks数据类型

StarRocks的改表语句

1 数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 修改表结构

StarRocks 支持多种 DDL 操作。
可以通过 ALTER TABLE 命令可以修改表的 Schema,包括增加列,删除列,修改列类型(暂不支持修改列名称),改变列顺序。
1 增加列
例如,在以上创建的表中,在 ispass 列后新增一列 uv,类型为 BIGINT,默认值为 0。

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

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

ALTER TABLE detailDemo DROP COLUMN uv;
  • 1

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

SHOW ALTER TABLE COLUMN\G;
  • 1

当作业状态为 FINISHED,则表示作业完成,新的表结构修改已生效。
修改 Schema 完成之后,您可以通过以下命令查看最新的表结构。
DESC table_name;

3 示例

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

ALTER TABLE example_db.my_table
SET ("default.replication_num" = "2");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
SET ("replication_num" = "3");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
SET ("replicated_storage" = "false");
  • 1
  • 2

以上示例表示将多副本的写入和同步方式设置为 leaderless replication,即数据同时写入到多个副本,不区分主从副本。
2 partition
增加分区,现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式。

ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
DISTRIBUTED BY HASH(k1) BUCKETS 20;
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
("replication_num"="1");
  • 1
  • 2
  • 3

修改分区副本数。

ALTER TABLE example_db.my_table
MODIFY PARTITION p1 SET("replication_num"="1");
  • 1
  • 2

批量修改指定分区。

ALTER TABLE example_db.my_table
MODIFY PARTITION (p1, p2, p4) SET("in_memory"="true");
  • 1
  • 2

批量修改所有分区。

ALTER TABLE example_db.my_table
MODIFY PARTITION (*) SET("storage_medium"="HDD");
  • 1
  • 2

删除分区。

ALTER TABLE example_db.my_table
DROP PARTITION p1;
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ADD ROLLUP example_rollup_index(k1, k3, v1, v2)
PROPERTIES("storage_type"="column");
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
ADD ROLLUP example_rollup_index2 (k1, v1)
FROM example_rollup_index;
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
ADD ROLLUP example_rollup_index(k1, k3, v1)
PROPERTIES("storage_type"="column", "timeout" = "3600");
  • 1
  • 2
  • 3

删除 index: example_rollup_index2。

ALTER TABLE example_db.my_table
DROP ROLLUP example_rollup_index2;
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1
TO example_rollup_index;
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
ADD COLUMN new_col INT DEFAULT "0" AFTER col1
TO example_rollup_index;
  • 1
  • 2
  • 3

向 example_rollup_index 的 col1 后添加一个 key 列 new_col(聚合模型)。
ALTER TABLE example_db.my_table

ADD COLUMN new_col INT DEFAULT "0" AFTER col1
TO example_rollup_index;
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1
TO example_rollup_index;
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
ADD COLUMN (col1 INT DEFAULT "1", col2 FLOAT SUM DEFAULT "2.3")
TO example_rollup_index;
  • 1
  • 2
  • 3

从 example_rollup_index 删除一列。

ALTER TABLE example_db.my_table
DROP COLUMN col2
FROM example_rollup_index;
  • 1
  • 2
  • 3

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

ALTER TABLE example_db.my_table
MODIFY COLUMN col1 BIGINT DEFAULT "1" AFTER col2;
  • 1
  • 2

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

ALTER TABLE example_db.my_table
MODIFY COLUMN val1 VARCHAR(64) REPLACE DEFAULT "abc";
  • 1
  • 2

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

ALTER TABLE example_db.my_table
ORDER BY (k3,k1,k2,v2,v1)
FROM example_rollup_index;
  • 1
  • 2
  • 3

同时执行两种操作。

ALTER TABLE example_db.my_table
ADD COLUMN v2 INT MAX DEFAULT "0" AFTER k2 TO example_rollup_index,
ORDER BY (k3,k1,k2,v2,v1) FROM example_rollup_index;
  • 1
  • 2
  • 3

修改表的 bloom filter 列。

ALTER TABLE example_db.my_table
SET ("bloom_filter_columns"="k1,k2,k3");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
DROP COLUMN col2
PROPERTIES ("bloom_filter_columns"="k1,k2,k3");
  • 1
  • 2
  • 3

修改表的 Colocate 属性。

ALTER TABLE example_db.my_table
SET ("colocate_with" = "t1");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
SET ("distribution_type" = "hash");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
SET ("dynamic_partition.enable" = "false");
  • 1
  • 2

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

ALTER TABLE example_db.my_table
SET (
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "32"
    );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

修改表的 in_memory 属性。

ALTER TABLE example_db.my_table
SET ("in_memory" = "true");
  • 1
  • 2

5 rename
将名为 table1 的表修改为 table2。

ALTER TABLE table1 RENAME table2;
  • 1

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

ALTER TABLE example_table RENAME ROLLUP rollup1 rollup2;
  • 1

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

ALTER TABLE example_table RENAME PARTITION p1 p2;
  • 1

6 index
在 table1 上为 siteid 创建 bitmap 索引。

ALTER TABLE table1
ADD INDEX index_name (siteid) [USING BITMAP] COMMENT 'balabala';
  • 1
  • 2

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

    7 swap
    将 table1 与 table2 原子替换。

    ALTER TABLE table1 SWAP WITH table2;
    
    • 1

    改key语句
    修改指定 index 的列类型以及列位置 (MODIFY COLUMN)
    语法:

    ALTER TABLE [database.]table
    MODIFY 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", ...)]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/469020
    推荐阅读
    相关标签
      

    闽ICP备14008679号