CREATE TABLE
CREATE TABLE
用于在AnalyticDB for MySQL中创建表。
语法
CREATE TABLE [IF NOT EXISTS] table_name
({column_name column_type [column_attributes] [ column_constraints ] [COMMENT 'string']
| table_constraints}
[, ... ] )
table_attribute
[partition_options]
[AS] query_expression
COMMENT 'string'
column_attributes:
[DEFAULT default_expr]
[AUTO_INCREMENT]
column_constraints:
[{NOT NULL|NULL} ]
[PRIMARY KEY]
table_constraints:
[{INDEX|KEY} [index_name] (column_name,...)]
[PRIMARY KEY [index_name] (column_name,...)]
[CLUSTERED KEY [index_name] (column_name,...)]
table_attribute:
DISTRIBUTED BY HASH(column_name,...) | DISTRIBUTED BY BROADCAST
partition_options:
PARTITION BY
{VALUE(column_name) | VALUE(date_format(column_name, ?)}
[LIFECYCLE N]
参数
参数 | 说明 |
---|---|
table_name | 表名。 表名以字母或下划线(_)开头,可包含字母、数字以及下划线(_),长度为1到127个字符。 支持 |
column_name | 列名。 列名以字母或下划线(_)开头,可包含字母、数字以及下划线(_),长度为1到127个字符。 |
column_type | 要添加的列的数据类型。 AnalyticDB for MySQL支持的数据类型请参见数据类型。 |
column_attributes |
|
column_constraints |
|
table_constraints | INDEX|KEY :倒排索引。AnalyticDB for MySQL默认为表创建全索引,一般情况下无须手动创建索引。 |
PRIMARY KEY | 主键索引。
|
CLUSTERED KEY | 聚集索引,定义表中的排序列,聚集索引中键值的逻辑顺序决定了表中相应行的物理顺序,每个表仅支持创建一个聚集索引。 例如, 聚集索引可以对整个表进行排序,例如电商交易表中按照seller_id做聚集索引,每个卖家只访问自己的数据(WHERE条件中使用seller_id),避免随机访问,提高数据查询效率。CDN用户按照user_id做聚集列全局排序,实际业务中CDN用户可以快速访问自己的日志,效率也更高。 聚集列有以下限制:
|
DISTRIBUTED BY HASH(column_name,...) | 在普通表中定义表的分布键,按照column_name 的HASH值进行分区。AnalyticDB for MySQL支持将多个字段作为分区键。 |
DISTRIBUTED BY BROADCAST | 用于定义维度表,维度表会在集群的每个节点存储一份数据,因此建议维度表的数据量不宜太大。 |
partition_options | 普通表中定义分区。 AanlyticDB for MySQL通过 例如, |
注意事项
创建表时,AnalyticDB for MySQL集群默认编码格式为utf-8,相当于MySQL中的utf8mp4编码,暂不支持其他编码格式。
目前AnalyticDB for MySQL集群支持创建的最大表数目是
节点组数目*256
。
示例
新建TEST表。
create table test (
id bigint auto_increment,
name varchar,
value int,
ts timestamp
)
DISTRIBUTED BY HASH(id)
TEST为普通表,
id
为自增列,分布键为id
,按照id
值进行HASH分区。新建CUSTOMER表。
CREATE TABLE customer (
customer_id bigint NOT NULL COMMENT '顾客ID',
customer_name varchar NOT NULL COMMENT '顾客姓名',
phone_num bigint NOT NULL COMMENT '电话',
city_name varchar NOT NULL COMMENT '所属城市',
sex int NOT NULL COMMENT '性别',
id_number varchar NOT NULL COMMENT '身份证号码',
home_address varchar NOT NULL COMMENT '家庭住址',
office_address varchar NOT NULL COMMENT '办公地址',
age int NOT NULL COMMENT '年龄',
login_time timestamp NOT NULL COMMENT '登录时间',
PRIMARY KEY (login_time,customer_id,phone_num)
)
DISTRIBUTED BY HASH(customer_id)
PARTITION BY VALUE(DATE_FORMAT(login_time, '%Y%m%d')) LIFECYCLE 30
COMMENT '客户信息表';
CUSTOMER表为普通表,
customer_id
为分布键,login_time
为分区键,login_time
、customer_id
、phone_num
为组合主键。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论