CREATE TABLE
功能
该语句用于创建表。
该操作需要有在对应数据库内的建表权限 (CREATE TABLE)。
语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [database.]table_name
(column_definition1[, column_definition2, ...]
[, index_definition1[, index_definition2, ...]])
[ENGINE = [olap|mysql|elasticsearch|hive|iceberg|hudi|jdbc]]
[key_desc]
[COMMENT "table comment"]
[partition_desc]
[distribution_desc]
[rollup_index]
[ORDER BY (column_name1,...)]
[PROPERTIES ("key"="value", ...)]
[BROKER PROPERTIES ("key"="value", ...)]
参数说明
column_definition
语法:
col_name col_type [agg_type] [NULL | NOT NULL] [DEFAULT "default_value"] [AUTO_INCREMENT] [AS generation_expr]
说明:
col_name:列名称。
注意,在一般情况下,不能直接创建以以 __op 或 __row 开头命名的列,因为此类列名被 StarRocks 保留用于特殊目的,创建这样的列可能导致未知行为。如需创建这样的列,必须将 FE 动态参数 allow_system_reserved_names 设置为 TRUE。
col_type:列数据类型
支持的列类型以及取值范围等信息如下:
-
TINYINT(1字节) 范围:-2^7 + 1 ~ 2^7 - 1
-
SMALLINT(2字节) 范围:-2^15 + 1 ~ 2^15 - 1
-
INT(4字节) 范围:-2^31 + 1 ~ 2^31 - 1
-
BIGINT(8字节) 范围:-2^63 + 1 ~ 2^63 - 1
-
LARGEINT(16字节) 范围:-2^127 + 1 ~ 2^127 - 1
-
FLOAT(4字节) 支持科学计数法。
-
DOUBLE(8字节) 支持科学计数法。
-
DECIMAL[(precision, scale)] (16字节) 保证精度的小数类型。默认是 DECIMAL(10, 0) precision: 1 ~ 38 scale: 0 ~ precision 其中整数部分为:precision - scale 不支持科学计数法。
-
DATE(3字节) 范围:0000-01-01 ~ 9999-12-31
-
DATETIME(8字节) 范围:0000-01-01 00:00:00 ~ 9999-12-31 23:59:59
-
CHAR[(length)]
定长字符串。长度范围:1 ~ 255。默认为 1。
-
VARCHAR[(length)]
变长字符串。单位:字节,默认取值为
1。- StarRocks 2.1.0 之前的版本,
length的取值范围为 1~65533。 - 【公测中】自 StarRocks 2.1.0 版本开始,
length的取值范围为 1~1048576。
- StarRocks 2.1.0 之前的版本,
-
HLL (1~16385个字节)
HLL 列类型,不需要指定长度和默认值,长度根据数据的聚合程度系统内控制,并且 HLL 列只能通过配套的 hll_union_agg、hll_cardinality、hll_hash