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

news/2024/11/28 6:25:20/

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_table
SET ("default.replication_num" = "2");

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

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

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

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

以上示例表示将多副本的写入和同步方式设置为 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");

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

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

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

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

修改分区副本数。

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

批量修改指定分区。

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

批量修改所有分区。

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

删除分区。

ALTER TABLE example_db.my_table
DROP PARTITION p1;

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

ALTER TABLE example_db.my_table
ADD 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_table
ADD 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_table
ADD 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_table
ADD ROLLUP example_rollup_index(k1, k3, v1)
PROPERTIES("storage_type"="column", "timeout" = "3600");

删除 index: example_rollup_index2。

ALTER TABLE example_db.my_table
DROP ROLLUP example_rollup_index2;

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;

向 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;

向 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;

向 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;

向 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;

从 example_rollup_index 删除一列。

ALTER TABLE example_db.my_table
DROP COLUMN col2
FROM example_rollup_index;

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

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

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

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

重新排序 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;

同时执行两种操作。

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;

修改表的 bloom filter 列。

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

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

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

修改表的 Colocate 属性。

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

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

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

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

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

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

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");

修改表的 in_memory 属性。

ALTER TABLE example_db.my_table
SET ("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 table1
ADD 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.]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", ...)]

http://www.ppmy.cn/news/40239.html

相关文章

银行数字化转型导师坚鹏:金融数字化转型助力乡村振兴及案例

金融数字化转型助力乡村振兴及案例课程背景: 很多银行存在以下问题:不清楚如何借助数字化转型助力乡村振兴?不知道普惠金融模式和产品如何有效创新?不知道数字化转型助力乡村振兴的成功案例? 课程特色&#xff1…

过来人看PMP证书:究竟含金量有多高?

取证一年,结合亲身经历告诉你含金量在哪里。主要在两方面说下我的理解:一是证书对自己的镀金效果,二是管理技能提升带来的隐形效益。 1、被权威机构认证和全球认可 PMP认证在全球范围内获得了200多个国家和地区的广泛认可,是项目…

X264简介-Android上的使用(三)

X264简介-Android上的使用(三) 一、X264 .a文件的log2f错误: libx264.a(encoder-8.o):encoder.c:function validate_parameters: error: undefined reference to log2flibx264.a(encoder-8.o):encoder.c:function x264_8_encoder_reconfig:…

Win10永久删除的文件怎么恢复?实用指南!

案例:怎么恢复win10永久删除的文件? 【今天我使用电脑时不小心把一些非常重要的文件永久删除了!这可怎么办!我的电脑是win10系统的,想问问各位使用win10的小伙伴,有什么新手也可以操作的好用方法可以恢复永…

2023年noc指导教师认证测评参考试题

[noc指导教师认证] 测评参考试题 说明:NOC教师指导认证考试题目是从题库里抽题,因此每位老师每次考试题目都不一样以下题目为测试考试时收集到的一些题目,作为辅助提供给各位老师,老师们可以记住题目及答案的具体内容 (选项顺序会变),以免考试时遇到。 题目: 1、关于for循…

ROS实践09 发布速度控制指令 控制乌龟画圆

文章目录运行环境:思路:需求:1.1 获取乌龟位姿消息类型和消息格式1.2 创建工作空间1.3编写发布1.4修改CMakeList1.5编译运行运行环境: ubuntu20.04 noetic 宏基暗影骑士笔记本 思路: rostopic list rostopic type /t…

蓝桥杯 2023 C++ B组 (个人代码,可能有小错误)

A题直接枚举即可&#xff0c;枚举日期&#xff0c;暴力匹配 #include<iostream> #include<algorithm> #include<vector> using namespace std; bool check(string t){if(t.substr(0, 4)!"2023") return false;string mon t.substr(4, 2);string …

AIGC技术周报|ChatDoctor:哪里不舒服;HuggingGPT:连接大模型和机器学习社区;ChatGPT真的鲁棒吗?

AIGC通过借鉴现有的、人类创造的内容来快速完成内容创作。ChatGPT、Bard等AI聊天机器人以及DallE 2、Stable Diffusion等文生图模型都属于AIGC的典型案例。「AIGC技术周报」将为你带来最新的paper、博客等前瞻性研究。 1.ChatDoctor&#xff1a;哪里不舒服&#xff1f; 通用领…