执行CREATE TABLE语句为已存在的表或者多元索引创建映射关系。本文介绍如何为已存在的表创建映射关系。
说明 关于创建多元索引的映射关系的具体操作,请参见创建多元索引的映射关系。
语法
CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type [NOT NULL | NULL],...
| PRIMARY KEY(key_part[,key_part])
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';
当表只有一个主键时,您还可以使用如下语法为已存在的表创建映射关系。
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type PRIMARY KEY,column_name data_type [NOT NULL | NULL],...
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';
参数
参数 | 是否必选 | 说明 |
---|---|---|
IF NOT EXISTS | 否 | 如果指定IF NOT EXISTS,无论表是否存在,均会返回成功;如果未指定IF NOT EXISTS,则只有当表不存在时,才会返回成功。 |
table_name | 是 | 表名,用于唯一标识一张表。
SQL中的表名必须和原始表名相同。 |
column_name | 是 | 列名。
SQL中的列名必须和原始表中的列名等效,例如原始表中列名为Aa,在SQL中列名必须使用Aa、AA、aA或者aa中的一个。 |
data_type | 是 | 列的数据类型,包含BIGINT、DOUBLE、BOOL等多种数据类型。
SQL中列的数据类型必须和原始表中列的数据类型相匹配。关于数据类型映射的更多信息,请参见数据类型映射。 |
NOT NULL | NULL | 否 | 列值是否允许为NULL。取值范围如下:
|
key_part | 是 | 主键列名称。支持设置多个主键列,多个主键列之间用英文逗号(,)分隔。
主键列名称必须包含在列名中。 |
ENGINE | 否 | 使用映射表查询数据时的执行引擎。取值范围如下:
|
ENGINE_ATTRIBUTE | 否 | 执行引擎的属性,以JSON格式表示。包括如下选项:
|
示例
- 创建名称为exampletable1的表,表包含主键列id(BIGINT类型)以及属性列colvalue(BIGINT类型)和content(MEDIUMTEXT)。
CREATE TABLE exampletable1 (id BIGINT PRIMARY KEY, colvalue BIGINT, content MEDIUMTEXT);
- 创建名称为exampletable2的表,表包含主键列id(BIGINT类型)、colvalue(VARCHAR类型)以及属性列content(MEDIUMTEXT类型),并且所有对该表的查询必须满足强一致性。
CREATE TABLE exampletable2 (id BIGINT, colvalue VARCHAR(1024), content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE_ATTRIBUTE='{"consistency": "strong"}';