StarRocks创建表

sql 复制代码
-- 1. 创建一个新的学习用数据库
CREATE DATABASE IF NOT EXISTS learn_starrocks;

-- 2. 切换到该数据库
USE learn_starrocks;

-- 3. 创建一张简单的用户信息表
-- 注意:StarRocks 建表时必须指定分桶键 (DISTRIBUTED BY HASH)
-- ENGINE 默认为 OLAP,通常省略
CREATE TABLE IF NOT EXISTS user_basic
(
    user_id       INT COMMENT "用户ID",
    username      VARCHAR(50) COMMENT "用户名",
    city          VARCHAR(20) COMMENT "城市",
    age           SMALLINT COMMENT "年龄",
    sex           TINYINT COMMENT "性别: 0-女, 1-男",
    register_date DATETIME COMMENT "注册时间"
)
    ENGINE = OLAP DUPLICATE KEY(user_id, username) -- 明细模型,指定排序键
DISTRIBUTED BY HASH(user_id) BUCKETS 3 -- 3个分桶
PROPERTIES (
    "replication_num" = "1" -- 单机版必须设置为 1 (默认为 3)
);

-- 4. 插入几条测试数据
INSERT INTO user_basic
VALUES (1001, 'Alice', 'New York', 28, 0, '2023-01-01 10:00:00'),
       (1002, 'Bob', 'Los Angeles', 35, 1, '2023-01-02 11:30:00'),
       (1003, 'Charlie', 'Chicago', 22, 1, '2023-01-05 09:15:00');

-- 5. 查询数据
SELECT *
FROM user_basic
ORDER BY user_id;

查看表结构

DESC user_basic;

查看建表语句

SHOW CREATE TABLE user_basic;

sql 复制代码
CREATE TABLE `user_basic`
(
    `user_id`       int(11)     NULL COMMENT "用户ID",
    `username`      varchar(50) NULL COMMENT "用户名",
    `city`          varchar(20) NULL COMMENT "城市",
    `age`           smallint(6) NULL COMMENT "年龄",
    `sex`           tinyint(4)  NULL COMMENT "性别: 0-女, 1-男",
    `register_date` datetime    NULL COMMENT "注册时间"
) ENGINE = OLAP DUPLICATE KEY(`user_id`, `username`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 3 
PROPERTIES (
"compression" = "LZ4",
"fast_schema_evolution" = "true",
"replicated_storage" = "true",
"replication_num" = "1"
);

各部分解释:

部分 解释
IF NOT EXISTS 如果表已存在则不创建(避免报错)
列定义部分 定义表的列结构
COMMENT 列注释,支持中文
ENGINE = OLAP 指定为 OLAP 引擎(分析型数据库)
DUPLICATE KEY(user_id, username) 明细模型,指定排序列,数据按此排序存储
DISTRIBUTED BY HASH(user_id) 数据分布方式:按 user_id 的哈希值分布
BUCKETS 3 分为 3 个分桶(类似分区)
PROPERTIES 表属性配置
"replication_num" = "1" 副本数为 1(单机环境必须设为 1)

StarRocks 建表语句必选参数

必须的参数

参数 是否必须 说明
ENGINE ✅ 必须 必须是 ENGINE = OLAP
数据模型 ✅ 必须 DUPLICATE KEYAGGREGATE KEYUNIQUE KEY 三选一
分布方式 ✅ 必须 DISTRIBUTED BY HASH(...)RANDOM
分桶数 ✅ 必须 BUCKETS 必须指定数值
PROPERTIES ✅ 必须 至少要设置 replication_num

可选的参数

参数 是否必须 说明
IF NOT EXISTS ⚪ 可选 避免表已存在时报错
COMMENT ⚪ 可选 列注释,非必需
表注释 ⚪ 可选 COMMENT "表注释" 在表名后
排序键列 ⚪ 可选 数据模型中可指定排序列(但必须要有KEY)
其他属性 ⚪ 可选 如压缩、过期时间等
相关推荐
这个DBA有点耶几秒前
银行核心系统数据库迁移怎么选?6 步法+5 个避坑指南
数据库·安全·架构
风哥2号4 分钟前
数据库教程FGMT31‑Linux平台MySQL9.7安装配置与版本升级
数据库
hanchenxing11 分钟前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
java_logo1 小时前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像
A心有千千结2 小时前
GO 使用 OpenTelemetry 进行编译时插桩,实现零码注入
数据库·golang·可观测性·观测云
GreatVicent2 小时前
腾讯AI产业大会解读:Agent进场,企业基础设施怎么搭
大数据·数据库·人工智能·llm·agent·企业信息化
大模型码小白3 小时前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna3 小时前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
IvorySQL3 小时前
PostgreSQL 日报|建库策略致备库静默丢数据(9 月 12 日)
数据库·人工智能·postgresql
这个DBA有点耶3 小时前
当Agent从“写SQL”变成“执行SQL”:数据库安全模型需要重新设计
数据库·aigc·dba