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 KEY、AGGREGATE KEY 或 UNIQUE KEY 三选一 |
| 分布方式 | ✅ 必须 | DISTRIBUTED BY HASH(...) 或 RANDOM |
| 分桶数 | ✅ 必须 | BUCKETS 必须指定数值 |
| PROPERTIES | ✅ 必须 | 至少要设置 replication_num |
可选的参数 ⚪
| 参数 | 是否必须 | 说明 |
|---|---|---|
| IF NOT EXISTS | ⚪ 可选 | 避免表已存在时报错 |
| COMMENT | ⚪ 可选 | 列注释,非必需 |
| 表注释 | ⚪ 可选 | COMMENT "表注释" 在表名后 |
| 排序键列 | ⚪ 可选 | 数据模型中可指定排序列(但必须要有KEY) |
| 其他属性 | ⚪ 可选 | 如压缩、过期时间等 |