标准语法
CREATE TABLE [ IF NOT EXISTS ] table_name
( { column_name column_definition | table_constraints } [, ... ] )
DISTRIBUTE_KEY (column_name)
[table_attribute]
DROP TABLE table_name
说明 在HybridDB for MySQL中创建表,必须指定分区键。
表定义示例:
CREATE TABLE mytable (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(128) NOT NULL,
ts timestamp DEFAULT CURRENT_TIMESTAMP,
title varchar(256) DEFAULT NULL,
content text DEFAULT NULL,
view_count int DEFAULT 0,
PRIMARY KEY (id),
KEY idx_name(name)
) DEFAULT CHARSET=utf8
DISTRIBUTE_KEY (name);
表定义说明:
- tablename表名不得超过32字节,只能使用英文字母、阿拉伯数字和下划线’_’。
- columnname列名不得超过32字节,只能使用英文字母、阿拉伯数字和下划线’_’。
- 暂不支持更新UPDATE主键(PRIMARY KEY)和分区键(DISTRIBUTE_KEY)的值;若需要变更主键和分区键的值,需要先 DELETE 后重新 INSERT。
- 最多支持512个列。
- 一行数据的大小不得超过16MB。
- 表名和列名不得选用关键字,如果必须使用,则在使用时必须为表名和列名加入反引号(`)(注意不是单引号’)。
支持的数据类型data_type:
TINYINT[(length)] [UNSIGNED] [ZEROFILL]
SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
INT[(length)] [UNSIGNED] [ZEROFILL]
INTEGER[(length)] [UNSIGNED] [ZEROFILL]
BIGINT[(length)] [UNSIGNED] [ZEROFILL]
DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
CHAR[(length)] [BINARY]
VARCHAR(length) [BINARY]
DATE
TIME
DATETIME
TIMESTAMP
TINYTEXT [BINARY]
TEXT [BINARY]
MEDIUMTEXT [BINARY]
LONGTEXT [BINARY]
BOOL
BOOLEAN
列定义column_definition
column_definition:
data_type [ { NOT NULL | NULL } ][ DEFAULT default_expr ]
[ AUTO_INCREMENT ][ { [ UNIQUE | PRIMARY ] KEY } ]
[ COMMENT column_comment ]
说明
- 列注释column_comment不得使用任何英文字符外的注释。
- AUTO_INCREMENT自增字段指明该列为唯一值,该列必须为BIGINT类型,分布式数据库会自动为该列生成一个64位的唯一值,且该字段将自动成为主键,对于表的字段,若用户插入该字段,那么数据库将存储用户提供的值,用户需要自行保证该值的唯一性,否则可能在多个分区上出现相同的值,引发冲突;若用户插入NULL,或者不插入该字段,那么数据库将为用户生成该字段的值,数据库将自行保证该值的唯一性。
表约束table_constraints:
[ KEY index_name( index_column_name [, ... ] ) ] [ UNIQUE KEY index_name( index_column_name [, ... ] ) ] [ PRIMARY KEY ( column_name [, ... ] ) ] index_column_name: column_name [(length)] [ASC | DESC]
说明
- 用户的表必须指定一个主键,否则在迁入数据时有可能出现重复数据。
- 创建的索引必须要有一个索引名字。
- 主键(PRIMARY KEY)暂不支持更新;若需要变更主键数据,需要先删除后,再重新插入。
- 唯一键(UNIQUE KEY)仅允许事先创建,通过UNIQUE INDEX index_name(col1, col2, col3, …)方式指定。主键和唯一键仅支持分区内的唯一性,不支持全局唯一性。若要保证全局唯一性,请将主键或唯一键的一个字段指定为分区键。
表分区
DISTRIBUTE_KEY (column_name)
说明
- 当前必须在DDL内指定分区键,分区键仅支持指定一个列,该列的数据类型只能为整数(TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT)或字符型(CHAR, VARCHAR)中的一种,数据按照分区键维度分散到各个分区中。
- 分区键(DISTRIBUTE_KEY)暂不支持更新UPDATE;若需要变更分区键数据,需要先 DELETE 后重新 INSERT。
表属性table_attribute:
[ DEFAULT CHARSET = table_charset ]
[ COMMENT table_comment ]
说明
- 表注释table_comment不得使用任何英文字符外的注释。
- 字符集仅支持utf8。
不支持的约束检查:
- 唯一性约束:允许用户建立主键和唯一性索引,但是不保证它们的全局唯一性,仅保证自增主键的全局唯一性。
- 外键约束。
- CHECK约束。
系统库和系统表:
目前并未开放任何系统库和系统表,包括information_schema等。
查看表定义
标准语法:
SHOW CREATE TABLE table_name DESC table_name DESC table_name DISTRIBUTE INFO
参数说明:
- SHOW CREATE TABLE table_name 用于展示表的基础表定义,此表定义当前不含分区键定义。
- DESC table_name 用于展示表的所有列名,列定义中不含分区键定义。
- DESC table_name DISTRIBUTE INFO 用于展示表的分区键。