创建表(CREATE TABLE) 语法示例 示例1: 在一个已经创建好的数据库中,使用如下HINT风格的SQL语句可建立一个名为mytable的全局表: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 / sharding @@table name'mytable' set type'global' /; 使用如下SQL风格的写法可达到等同效果: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 GLOBAL; 示例2: 在一个已经创建好的数据库中,使用如下HINT风格的SQL语句可建立一个单片表,其中,通过dn参数指定了单片表分布在名为dn1的RDS上。 plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 / sharding @@table name'mytable' set type'single' and dn'dn1' /; 使用如下SQL风格的写法可达到等同效果: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 SINGLE DN 'dn1'; 示例3: 在一个已经创建好的数据库中,使用如下HINT风格的SQL语句可建立一个库内分表(分库分表)的数据表,其中,在sharding hint中通过shardingalgo、shardingid指定了分片算法和算法作用的数据列,innershardingid、innershardingalgo则指定了分表算法和算法作用的数据列,并通过innertotal指定了分片数量为10,通过dn指定了使用的RDS为dn1、dn2和dn3。 plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, column2 int NOT NULL, column3 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 / sharding @@table name'mytable' set type'inner' and shardingalgo'PartitionByMod' and shardingid'column1' and innershardingid'column2' and innershardingalgo'PartitionByMod' and innertotal10 and dn'dn1,dn2,dn3' /; 使用如下SQL风格的写法可达到等同效果: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, column2 int NOT NULL, column3 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 UDALPARTITION BY HASH(column1), HASH(column2) PARTITIONS 10 DN 'dn1,dn2,dn3'; 示例4: 在一个已经创建好的数据库中,使用如下HINT风格的SQL语句可建立一个库内分桶(分库分桶)的数据表,其中,在sharding hint中通过shardingalgo、shardingid指定了分片算法和算法作用的数据列,并通过buckets指定了分桶数量为10,通过dn指定了使用的RDS为dn1、dn2和dn3。 plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, column2 int NOT NULL, column3 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 / sharding @@table name'bill' set type'sharding' and shardingalgo'PartitionByMod' and shardingid'column1' and buckets10 and dn'dn1,dn2,dn3' /; 使用如下SQL风格的写法可达到等同效果: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, column2 int NOT NULL, column3 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 UDALPARTITION BY HASH(column1) BUCKETS 10 DN 'dn1,dn2,dn3'; 示例5: 在一个已经创建好的数据库中,使用如下HINT风格的SQL语句可建立一个只分片、既不分表也不分桶的数据表,其中,在sharding hint中通过shardingalgo、shardingid指定了分片算法和算法作用的数据列,并通过dn指定了使用的RDS为dn1、dn2和dn3。 plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 / sharding @@table name'mytable' set type'sharding' and shardingid'column1' and shardingalgo'PartitionByMod' and dn'dn1,dn2,dn3' /; 使用如下SQL风格的写法可达到等同效果: plaintext CREATE TABLE IF NOT EXISTS mytable ( id int NOT NULL, column1 int NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8 UDALPARTITION HASH(column1) DN 'dn1,dn2,dn3';