tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

CREATE TABLE

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:46:26

功能描述

创建表。

语法

CREATE TABLE [IF NOT EXISTS] table_name
(table_definition_list) [table_option_list] [partition_clause] [opt_using_policy] ;

table_definition_list:
table_definition [, table_definition ...]

table_definition:
column_definition_list
| [CONSTRAINT [constraint_name]] PRIMARY KEY index_desc
| [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY}
[index_name] index_desc
| [CONSTRAINT [constraint_name]] CHECK(expression) constranit_state

column_definition_list:
column_definition [, column_definition ...]

column_definition:
column_name data_type
[DEFAULT const_value] [AUTO_INCREMENT]
[NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] [COMMENT string_value]
index_desc:
(column_desc_list) [index_option_list]

index_option_list:
index_option [ index_option ...]

index_option:
KEY_BLOCK_SIZE [=] INT_VALUE
| COMMENT string_value

table_option_list:
table_option [ table_option ...]

table_option:
[DEFAULT] {CHARSET | CHARACTER SET} [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| COMMENT string_value
| ROW_FORMAT [=] REDUNDANT|COMPACT|DYNAMIC|COMPRESSED|DEFAULT
| SYNC_LEVEL [=] 'NODE(MAJORITY)|NODE(ALL)'
| DISTRIBUTION [=] 'NODE(DEFAULT)|NODE(ALL)'

partition_option:
PARTITION BY HASH(expression)
[subpartition_option] PARTITIONS partition_count
| PARTITION BY KEY([column_name_list])
[subpartition_option] PARTITIONS partition_count
| PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
[subpartition_option] (range_partition_list)
| PARTITION BY LIST {(expression) | COLUMNS (column_name_list)}
[subpartition_option] PARTITIONS partition_count
| PARTITION BY RANGE [COLUMNS]([column_name_list]) (range_partition_list)

subpartition_option:
SUBPARTITION BY HASH(expression)
SUBPARTITIONS subpartition_count
| SUBPARTITION BY KEY(column_name_list)
SUBPARTITIONS subpartition_count
| SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
(range_subpartition_list)
| SUBPARTITION BY LIST(expression)

range_partition_list:
range_partition [, range_partition ...]

range_partition:
PARTITION partition_name
VALUES LESS THAN {(expression_list) | MAXVALUE}

range_subpartition_list:
range_subpartition [, range_subpartition ...]

range_subpartition:
SUBPARTITION subpartition_name
VALUES LESS THAN {(expression_list) | MAXVALUE}

expression_list:
expression [, expression ...]

column_name_list:
column_name [, column_name ...]

partition_name_list:
partition_name [, partition_name ...]

partition_count | subpartition_count:
INT_VALUE
opt_using_policy:
USING DISTRIBUTION POLICY distribution_policy_name
| USING PARTITION POLICY partition_policy_name

参数说明

参数
是否可选
描述
IF NOT EXISTS
可选
如果指定 IF NOT EXISTS,即使待创建的表已存在,也不会报错;如果不指定且待创建的表已存在,则系统会报错。
PRIMARY KEY
可选
为创建的表指定主键。如果不指定,则使用隐藏主键。
KEY | INDEX
可选
为创建的表指定键或索引。如果不指定索引名,则会使用索引引用的第一列作为索引名,如果命名存在重复,则会使用下划线(_)+ 序号的方式命名。(例如,使用 c1 列创建的索引如果命名重复,则会将索引命名为 c1_2。) 您可以通过 SHOW INDEX 语句查看表上的索引。
ROW_FORMAT
可选
指定表是否开启 Encoding 存储格式。
redundant:不开启 Encoding 存储格式。
compact:不开启 Encoding 存储格式。
dynamic:Encoding 存储格式。
compressed:Encoding 存储格式。
default:等价 dynamic 模式。
KEY_BLOCK_SIZE
可选
指定索引块的大小(以字节为单位)。
CHARSET | CHARACTER SET
可选
指定表中列的默认字符集。
COLLATE
可选
指定表中列的默认字符序。
COMMENT
可选
注释。不区分大小写。
CHECK
可选
限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列级约束可以写到列定义中,并且可以指定名称。
如果对一个表定义 CHECK 约束,那么此约束会应用于表中多个列,且允许出现在列的定义前。在删除表时,表中创建的 CHECK 约束也会一起被删除。
可以通过如下方式查看约束信息:
使用 SHOW CREATE TABLE 命令
查看 information_schema.TABLE_CONSTRAINTS 视图
查看 information_schema.CHECK_CONSTRAINTS 视图
constraint_name
可选
约束名称,最多包含 64 个字符。
约束名称的开头结尾中间都允许有空格,但需要用"`"标识名称的开头和结尾。
约束名称可以包含特殊字符"$"。
如果约束名称为保留字,需要用"`"标识,否则会报错。
在同一 Database 下不允许 CHECK 约束的名称重复。
expression
可选
约束表达式。
expression 不允许为空。
expression 结果不能为非布尔类型。
expression 不能包含不存在的列。
SYNC_LEVEL
可选
指定同步属性,取值如下:
NODE(MAJORITY) :默认值,表示该表为普通表。
NODE(ALL) :表示该表为同步表,leader需要将修改强同步到所有副本(除日志副本)
目前同步表必须和广播表一起使用。
DISTRIBUTION
可选
指定广播属性,取值如下:
NODE(DEFAULT) :默认值,表示该表为普通表。
NODE(ALL) :表示该表为同步表,会在系统中每个节点上都创建一个副本。
目前广播表必须和同步表一起使用。
distribution_policy_name
可选
指定需绑定的数据分布策略。请提前创建数据分布策略,详细请咨询技术支持工程师
预置分布策略:
inner_affinity:二级分区表的内部亲和性策略,绑定策略后不同一级分区下的对应二级分区会绑定在同一个 raft group 中,如 p0.sp0 p1.sp0 会放置在同一个 raft group 中。
partition_policy_name
可选
指定需绑定的分区亲和性策略 。请提前创建分区亲和性策略,详见 CREATE PARTITION POLICY

示例

创建数据库表。
tdsql [test]> CREATE TABLE tbl1 (c1 INT PRIMARY KEY, c2 VARCHAR(50));
Query OK, 0 rows affected
创建带索引的表。
tdsql [test]> CREATE TABLE tbl2 (c1 INT PRIMARY KEY, c2 INT, c3 INT, INDEX i1 (c2));
Query OK, 0 rows affected
创建 Hash 分区,分区数为 8 的表。
tdsql [test]> CREATE TABLE tbl3 (c1 INT PRIMARY KEY, c2 INT) PARTITION BY HASH(c1) PARTITIONS 8;
Query OK, 0 rows affected
创建一级分区为 Range 分区,二级分区为 Key 分区的表。
tdsql [test]> CREATE TABLE tbl4 (c1 INT, c2 INT, c3 INT) PARTITION BY RANGE(c1)
SUBPARTITION BY KEY(c2, c3) SUBPARTITIONS 5
(PARTITION p0 VALUES LESS THAN(0), PARTITION p1 VALUES LESS THAN(100));

Query OK, 0 rows affected
创建一列为 gbk, 一列为 utf8 的表。
tdsql [test]> CREATE TABLE tbl5 (
c1 VARCHAR(10),
c2 VARCHAR(10) CHARSET GBK COLLATE gbk_bin
) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Query OK, 0 rows affected
使用自增列作为分区键。
tdsql [test]> CREATE TABLE tbl6(inv_id BIGINT NOT NULL AUTO_INCREMENT,c1 BIGINT,
PRIMARY KEY (inv_id) ) PARTITION BY HASH(inv_id) PARTITIONS 8;
Query OK, 0 rows affected
创建带 CHECK 约束的表,并查看约束信息。
tdsql [test]> CREATE TABLE tbl7 (col1 INT, col2 INT, col3 INT, CONSTRAINT equal_check1 CHECK(col1 = col3 * 2));
Query OK, 0 rows affected

tdsql [test]> SHOW CREATE TABLE tbl7;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl10 | CREATE TABLE `tbl7` (
`col1` int DEFAULT NULL,
`col2` int DEFAULT NULL,
`col3` int DEFAULT NULL,
CONSTRAINT `equal_check1` CHECK ((`col1` = (`col3` * 2)))
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
创建同步表。
tdsql [test]> create table sync_table(c1 int primary key, c2 int) sync_level = node(all) distribution = node(all);
Query OK, 0 rows affected
创建绑定分区亲和性策略的表。
# 创建分区亲和性策略
tdsql [test]> create partition policy pp2 partition by hash(int) partitions 4;
Query OK, 0 rows affected
# 建表
tdsql [test]> create table tbl8(id INT) partition by hash(id) partitions 4 using partition policy pp2;
Query OK, 0 rows affected

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈