- 关于 TiDB
- 主要概念
- 操作指南
- 快速上手
- 部署
- 配置
- 安全
- 安全传输层协议 (TLS)
- 生成自签名证书
- 监控
- 迁移
- 运维
- 扩容缩容
- 升级
- 故障诊断
- 参考手册
- SQL
- 与 MySQL 兼容性对比
- SQL 语言结构
- 数据类型
- 函数与操作符
- SQL 语句
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ALTER DATABASE
ALTER TABLE
ALTER USER
ANALYZE TABLE
BEGIN
CHANGE COLUMN
COMMIT
CREATE DATABASE
CREATE INDEX
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP TABLE
DROP USER
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RENAME INDEX
RENAME TABLE
REPLACE
REVOKE <privileges>
ROLLBACK
SELECT
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CREATE TABLE
SHOW DATABASES
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEXES [FROM|IN]
SHOW INDEX [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW SCHEMAS
SHOW STATUS
SHOW [FULL] TABLES
SHOW TABLE STATUS
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
START TRANSACTION
TRACE
TRUNCATE
UPDATE
USE
- 约束
- 生成列
- 字符集
- 配置
- tidb-server
- pd-server
- tikv-server
- 安全
- 事务
- 系统数据库
- 错误码
- 支持的连接器和 API
- 垃圾回收 (GC)
- 性能调优
- 监控指标
- 报警规则
- 最佳实践
- TiSpark 使用指南
- TiDB Binlog
- 周边工具
- 常见问题 (FAQ)
- 技术支持
- 贡献
- 版本发布历史
- 术语表
重要
你正在查看 TiDB 数据库的较旧版本 (TiDB v2.1) 的文档。
如无特殊需求,建议使用 TiDB 数据库的最新 LTS 版本。
CREATE TABLE
CREATE TABLE
语句用于在当前所选数据库中创建新表,与 MySQL 中 CREATE TABLE
语句的行为类似。另可参阅单独的 CREATE TABLE LIKE
文档。
语法图
CreateTableStmt:
IfNotExists:
TableName:
TableElementListOpt:
TableElement:
PartitionOpt:
ColumnDef:
ColumnName:
Type:
ColumnOptionListOpt:
TableOptionListOpt:
TiDB 支持以下 table_option
。TiDB 会解析并忽略其他 table_option
参数,例如 AVG_ROW_LENGTH
、CHECKSUM
、COMPRESSION
、CONNECTION
、DELAY_KEY_WRITE
、ENGINE
、KEY_BLOCK_SIZE
、MAX_ROWS
、MIN_ROWS
、ROW_FORMAT
和 STATS_PERSISTENT
。
参数 | 含义 | 举例 |
---|---|---|
AUTO_INCREMENT | 自增字段初始值 | AUTO_INCREMENT = 5 |
SHARD_ROW_ID_BITS | 用来设置隐式 _tidb_rowid 的分片数量的 bit 位数 | SHARD_ROW_ID_BITS = 4 |
PRE_SPLIT_REGIONS | 用来在建表时预先均匀切分 2^(PRE_SPLIT_REGIONS) 个 Region | PRE_SPLIT_REGIONS = 4 |
CHARACTER SET | 指定该表的字符串编码。目前支持 UTF8MB4 | CHARACTER SET = 'utf8mb4' |
COLLATE | 指定该表所使用的字符集排序规则 | COLLATE = 'utf8mb4_bin' |
COMMENT | 注释信息 | COMMENT = 'comment info' |
注意
在 TiDB 2.1 版本中,SHARD_ROW_ID_BITS
、PRE_SPLIT_REGIONS
和 COLLATE
这三个功能都是从 2.1.13 版本(包括 2.1.13)开始支持的。
示例
创建一张简单表并插入一行数据:
CREATE TABLE t1 (a int);
DESC t1;
SHOW CREATE TABLE t1\G
INSERT INTO t1 (a) VALUES (1);
SELECT * FROM t1;
mysql> drop table if exists t1;
Query OK, 0 rows affected (0.23 sec)
mysql> CREATE TABLE t1 (a int);
Query OK, 0 rows affected (0.09 sec)
mysql> DESC t1;
+-------+---------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+------+---------+-------+
| a | int(11) | YES | | NULL | |
+-------+---------+------+------+---------+-------+
1 row in set (0.00 sec)
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)
mysql> INSERT INTO t1 (a) VALUES (1);
Query OK, 1 row affected (0.03 sec)
mysql> SELECT * FROM t1;
+------+
| a |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
删除一张表。如果该表不存在,就建一张表:
DROP TABLE IF EXISTS t1;
CREATE TABLE IF NOT EXISTS t1 (
id BIGINT NOT NULL PRIMARY KEY auto_increment,
b VARCHAR(200) NOT NULL
);
DESC t1;
mysql> DROP TABLE IF EXISTS t1;
Query OK, 0 rows affected (0.22 sec)
mysql> CREATE TABLE IF NOT EXISTS t1 (
-> id BIGINT NOT NULL PRIMARY KEY auto_increment,
-> b VARCHAR(200) NOT NULL
-> );
Query OK, 0 rows affected (0.08 sec)
mysql> DESC t1;
+-------+--------------+------+------+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+------+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| b | varchar(200) | NO | | NULL | |
+-------+--------------+------+------+---------+----------------+
2 rows in set (0.00 sec)
MySQL 兼容性
- TiDB 不支持
CREATE TEMPORARY TABLE
语法。 - 支持除空间类型以外的所有数据类型。
- 不支持
FULLTEXT
,HASH
和SPATIAL
索引。 - 为了与 MySQL 兼容,TiDB 会解析但忽略
index_col_name
属性的[ASC | DESC]
索引排序选项。 COMMENT
属性最多支持 1024 个字符,不支持WITH PARSER
选项。- TiDB 在单个表中最多支持 512 列。InnoDB 中相应的数量限制为 1017,MySQL 中的硬限制为 4096。
- TiDB 会解析并忽略
CHECK
约束,与 MySQL 5.7 相兼容。详情参阅CHECK
约束。 - TiDB 会解析并存储外键约束,但不会在 DML 语句中强制对外键进行约束检查。详情外键约束。
另请参阅
文档内容是否有帮助?