描述

该语句用来在数据库中创建一张新表。

格式

  1. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
  2. (table_definition_list) [table_option_list] [partition_option] [AS] select;
  3. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
  4. LIKE table_name;
  5. table_definition_list:
  6. table_definition [, table_definition ...]
  7. table_definition:
  8. column_definition
  9. | [CONSTRAINT [constraint_name]] PRIMARY KEY index_desc
  10. | [CONSTRAINT [constraint_name]] UNIQUE {INDEX | KEY} [index_name] index_desc
  11. | {INDEX | KEY} [index_name] index_desc
  12. | FULLTEXT [INDEX | KEY] [index_name] fulltext_index_desc
  13. column_definition_list:
  14. column_definition [, column_definition ...]
  15. column_definition:
  16. column_name data_type
  17. [DEFAULT const_value] [AUTO_INCREMENT]
  18. [NULL | NOT NULL] [[PRIMARY] KEY] [UNIQUE [KEY]] comment
  19. index_desc:
  20. (column_desc_list) [index_type] [index_option_list]
  21. fulltext_index_desc:
  22. (column_desc_list) CTXCAT(column_desc_list) [index_option_list]
  23. column_desc_list:
  24. column_desc [, column_desc ...]
  25. column_desc:
  26. column_name [(length)] [ASC | DESC]
  27. index_type:
  28. USING BTREE
  29. index_option_list:
  30. index_option [ index_option ...]
  31. index_option:
  32. [GLOBAL | LOCAL]
  33. | block_size
  34. | compression
  35. | STORING(column_name_list)
  36. | comment
  37. table_option_list:
  38. table_option [ table_option ...]
  39. table_option:
  40. [DEFAULT] {CHARSET | CHARACTER SET} [=] charset_name
  41. | [DEFAULT] COLLATE [=] collation_name
  42. | primary_zone
  43. | replica_num
  44. | table_tablegroup
  45. | block_size
  46. | compression
  47. | AUTO_INCREMENT [=] INT_VALUE
  48. | comment
  49. | DUPLICATE_SCOPE [=] "none|zone|region|cluster"
  50. | LOCALITY [=] "locality description"
  51. | ROW_FORMAT [=] REDUNDANT|COMPACT|DYNAMIC|COMPRESSED|DEFAULT
  52. | PCTFREE [=] num
  53. partition_option:
  54. PARTITION BY HASH(expression)
  55. [subpartition_option] PARTITIONS partition_count
  56. | PARTITION BY KEY([column_name_list])
  57. [subpartition_option] PARTITIONS partition_count
  58. | PARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
  59. [subpartition_option] (range_partition_list)
  60. | PARTITION BY LIST {(expression) | COLUMNS (column_name_list)}
  61. [subpartition_option] PARTITIONS partition_count
  62. subpartition_option:
  63. SUBPARTITION BY HASH(expression)
  64. SUBPARTITIONS subpartition_count
  65. | SUBPARTITION BY KEY(column_name_list)
  66. SUBPARTITIONS subpartition_count
  67. | SUBPARTITION BY RANGE {(expression) | COLUMNS (column_name_list)}
  68. (range_subpartition_list)
  69. | SUBPARTITION BY LIST(expression)
  70. range_partition_list:
  71. range_partition [, range_partition ...]
  72. range_partition:
  73. PARTITION partition_name
  74. VALUES LESS THAN {(expression_list) | MAXVALUE}
  75. range_subpartition_list:
  76. range_subpartition [, range_subpartition ...]
  77. range_subpartition:
  78. SUBPARTITION subpartition_name
  79. VALUES LESS THAN {(expression_list) | MAXVALUE}
  80. expression_list:
  81. expression [, expression ...]
  82. column_name_list:
  83. column_name [, column_name ...]
  84. partition_name_list:
  85. partition_name [, partition_name ...]
  86. partition_count | subpartition_count:
  87. INT_VALUE

参数说明

参数

描述

DUPLICATE_SCOPE

用来指定复制表属性,取值如下:

  • none:表示该表是一个普通表

  • zone:表示该表是一个复制表,leader需要将事务复制到本zone的所有F副本及R副本

  • region:表示该表是一个复制表,leader需要将事务复制到本region的所有F副本及R副本

  • cluster:表示该表是一个复制表,leader需要将事务复掉到cluster的所有F副本及R副本

不指定DUPLICATE_SCOPE的情况下,默认值为none。

ROW_FORMAT

指定表是否开启encoding存储格式

  • redundant:不开启encoding存储格式

  • compact:不开启encoding存储格式

  • dynamic:encoding存储格式

  • compressed:encoding存储格式

  • default:等价dynamic模式

BLOCK_SIZE

指定表的微块大小

COMPRESSION

指定表的压缩算法,取值如下:

  1. none:不使用压缩算法

  2. lz4_1.0: 使用lz4压缩算法

  3. zstd_1.0: 使用zstd压缩算法

  4. snappy_1.0: 使用snappy压缩算法

CHARSET | CHARACTER SET

指定表中列的默认字符集,可使用:utf8,utf8mb4,utf16,gb18030

COLLATE

指定表中列的默认比较规则,可使用:

utf8_bin, utf8_general_ci, utf8_unicode_ci, gbk_bin, gbk_chinese_ci, utf8mb4_general_ci, utf8mb4__general_cs, utf8mb4_bin, utf8mb4_unicode_ci, utf16_general_ci, utf16_bin, utf16_unicode_ci, gb18030_chinese_ci, gb18030_bin

primary_zone

指定主Zone(副本Leader所在 Zone)。

replica_num

指定副本数。

table_tablegroup

指定表所属的talegroup。

AUTO_INCREMENT

指定表中自增列的初始值。

comment

注释。

LOCALITY

描述副本在Zone间的分布情况,如:F@z1,F@z2,F@z3,R@z4 表示z1, z2, z3为全功能副本,z4为只读副本。

PCTFREE

指定宏块保留空间百分比。

举例

  • 创建数据库表。
  1. CREATE TABLE test (c1 int primary key, c2 VARCHAR(50)) REPLICA_NUM = 3, PRIMARY_ZONE = 'zone1';
  • 创建表,并指定垂直分区。其中第一个分区只有列c3,第二个分区包含列c1、c2,没有列出的c4、c5列为第三个分区。
  1. CREATE TABLE t1(c1 int,
  2. c2 int,
  3. c3 int,
  4. c4 int,
  5. c5 int)
  6. PARTITION BY CLOUMN ( c3, (c1, c2));
  • 创建一个复制表。
  1. CREATE TABLE item() locality = 'F,R{all_server}@hz1, F,R{all_server}@hz2,
  2. F,R{all_server}@hz3' DUPLICATE_SCOPE="cluster"
  • 创建带索引的表。
  1. create table t1 (c1 int primary key, c2 int, c3 int, index i1 (c2));
  • 创建hash分区,分区数为8的表。
  1. create table t1 (c1 int primary key, c2 int) partition by hash(c1) partitions 8;
  • 创建一级分区为range分区,二级分区为key分区的表。
  1. create table t1 (c1 int, c2 int, c3 int)
  2. partition by range(c1) subpartition by key(c2, c3) subpartitions 5
  3. (partition p0 values less than(0), partition p1 values less than(100));
  • 创建一列为gbk, 一列为utf8的表。
  1. create table t1 (c1 varchar(10),
  2. c2 varchar(10) charset gbk collate gbk_bin)
  3. default charset utf8 collate utf8mb4_general_ci;
  • 开启encoding并使用zstd压缩,宏块保留空间为5%。
  1. create table t1 (c1 int, c2 int, c3 varchar(64))
  2. compression 'zstd_1.0'
  3. ROW_FORMAT dynamic
  4. pctfree 5;