309
微信
CREATE TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
该语句用于在OceanBase数据库中创建新表。
格式
CREATE TABLE [IF NOT EXIST] tblname
(create_definition,...)
[table_options]
[partition_options];
CREATE TABLE [IF NOT EXISTS] tblname
LIKE oldtblname;
create_definition:
colname column_definition
| PRIMARY KEY (index_col_name[, index_col_name...]) [index_option]...
| {INDEX|KEY} [indexname] (index_col_name,...) [index_option]...
| UNIQUE {INDEX|KEY} [indexname] (index_col_name,...) [index_option]...
column_definition:
data_type [NOT NULL | NULL] [DEFAULT defaultvalue]
[AUTO_INCREMENT] [UNIQUE [KEY]] | [[PRIMARY] KEY]
[COMMENT 'string']
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]
| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| DATE
| TIME[(fsp)]
| TIMESTAMP[(fsp)]
| DATETIME[(fsp)]
| YEAR
| CHAR[(length)]
[CHARACTER SET charsetname] [COLLATE collationname]
| VARCHAR(length)
[CHARACTER SET charsetname] [COLLATE collationname]
| BINARY[(length)]
| VARBINARY(length)
index_col_name:
colname [(length)] [ASC | DESC](OceanBase1.0暂不支持前缀索引)
index_option:
GLOBAL [LOCAL]
|COMMENT 'string'
|COMPRESSION [=] '{NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}'
|BLOCK_SIZE [=] size
|STORING(columname_list)
table_options:
table_option [[,] table_option]...
table_option:
[DEFAULT] { CHARACTER SET | CHARSET } [=] value
| [DEFAULT] COLLATE [=] collationname
| COMMENT [=] 'comment string'
| COMPRESSION [=] '{NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}'
| EXPIRE_INFO [=] (expr)
| REPLICA_NUM [=] num
| TABLE_ID [=] id
| BLOCK_SIZE [=] size
| USE_BLOOM_FILTER [=] {True| False}
| PROGRESSIVE_MERGE_NUM [=] num
| TABLEGROUP [=] 'tablegroupname'
| PRIMARY_ZONE [=] 'zone'
| AUTO_INCREMENT [=] num
partition_options:
PARTITION BY
HASH(expr)
|KEY(column_list)
[PARTITIONS num]
[partition_definition ...]
partition_definition:
COMMENT [=] 'string' (暂不支持)
OceanBase内部数据以b树为索引,按照Primary Key排序。OceanBase 0.4.2及以前版本不允许用户创建只有主键列的表;OceanBase 0.5.0及以上版本支持创建只有主键列的表。OceanBase 1.0可以不指定主键,系统会自动生成。
CREATE TABLE支持UNIQUE约束;暂不支持创建临时表,暂不支持CHECK约束;不支持创建表的同时从其他表导入功能。
- 使用“IF NOT EXISTS”时,即使创建的表已经存在,也不会报错,如果不指定时,则会报错。
- “data_type”请参见数据类型章节。
- NOT NULL,DEFAULT,AUTO_INCREMENT用于列的完整性约束。
- “table_option”内容参考下表,各子句间用“,”隔开。
- “index_option”中,可以指定GLOBAL,LOCAL关键字,表述全局或局部索引。默认是GLOBAL index。创建带有Parition的表时index一定要加LOCAL关键字。如果没有加,系统将报错。
参数 含义 举例 CHARACTER SET 指定该表所有字符串的编码,用于对外提供元数据信息。目前仅支持UTF8MB4。 CHARACTER SET = 'utf8mb4' COMMENT 添加注释信息。 COMMENT='create by Bruce' COMPRESSION 存储数据时使用的压缩方法名,目前提供的方法有以下几种:
· none(默认值,表示不作压缩)
· LZ4_1.0
· LZO_1.0
· SNAPPY_1.0
· ZLIB_1.0COMPRESSION = 'NONE' EXPIRE_INFO 在MemTable中的动态数据和SSTable中的静态数据合并时,满足表达式的行会自动删除。
一般可用于自动删除过期数据。expire_info c1 < date_add(merging_frozen_time(),interval -1 HOUR);
merging_frozen_time()表示当前最新的合并时间,此函数只适用于过期条件。TABLE_ID 指定表的ID。如果指定的table_id小于50000,需要打开RootServer的配置项开关“enable_sys_table_ddl”,普通用户不建议指定。 TABLE_ID =4000 BLOCK_SIZE 设置Partition的微块大小。 默认为16K。 USE_BLOOM_FILTER 对本表读取数据时,是否使用Bloom Filter。
· False:默认值,不使用。
· True:使用。USE_BLOOM_FILTER = False PROGRESSIVE_MERGE_NUM 设置渐近合并步数。
PROGRESSIVE_MERGE_NUM现在在限制是1~64。默认值为1。
PROGRESSIVE_MERGE_NUM = 5TABLEGROUP 表所属表格组。 REPLICA_NUM 这个表的partition总副本数,默认值为3。 REPLICA_NUM = 3 ZONE_LIST 集群列表 PRIMARY_ZONE 主集群。 AUTO_INCREMENT 自增字段初始值 AUTO_INCREMENT = 5
AUTO_INCREMENT基本说明
在OceanBase中可以把表中的数据类型为整数型的某个字段定义为自增属性AUTO_INCREMENT,数据库会自动递增方式生产唯一值。
允许给TINYINT、SMALLINT、MEDIUMINT、INT、INTEGER、BIGINT各种整数类型的字段指定AUTO_INCREMENT,其它数据类型的字段不能指定AUTO_INCREMENT。
一个表只允许有一个属性为AUTO_INCREMENT的字段。
Oceanbase>create table t1 (id int auto_increment,name varchar(20) primary key);
Query OK, 0 rows affected (0.01 sec)
举例
例1:
执行以下命令,创建数据库表。
ceanbase>CREATE TABLE test (c1 int primary key, c2 varchar(10)) REPLICA_NUM = 3, COMPRESSION = 'NONE';
Query OK, 0 rows affected (0.40 sec)
执行命令查看表信息,如:
Oceanbase>describe test;
+-------+-------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+------+---------+-------+
| c1 | int(11) | NO | PRI | NULL | |
| c2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+------+---------+-------+
2 rows in set (0.01 sec)
例2:
Oceanbase>CREATE TABLE example_2(custid INT,
thedate TIMESTAMP, cost INT, PRIMARY KEY(custid, thedate))
EXPIRE_INFO = (thedate < date_sub(merging_frozen_time(), INTERVAL 2 DAY)), USE_BLOOM_FILTER = FALSE;
Query OK, 0 rows affected (0.11 sec)
(thedate < date_sub(merging_frozen_time(), INTERVAL 2 DAY))
,表示删除(过期)thedate字段值为2天前的数据,删除数据动作在数据合并时候真正执行。其中 merging_frozen_time()表示当前最新的合并时间。(merging_frozen_time()只能放在过期条件中使用)
最后更新:2016-11-24 11:23:47
上一篇:
DROP DATABASE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
下一篇:
ALTER TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
阿里云携手德施曼联合发布《中国智能锁应用与发展白皮书》
DiskSetType__数据类型_API 参考_云服务器 ECS-阿里云
GetRow__API 概览_API 参考_表格存储-阿里云
阿里云发布神龙云服务器,甲骨文成“区块链即服务”生态新成员
Media C SDK开发包__历史版本SDK下载_SDK 参考_对象存储 OSS-阿里云
Condition__DataType_API 参考_表格存储-阿里云
批量删除域名__批量管理接口_API文档_云解析-阿里云
短信服务(Short Message Service)服务条款__服务协议条款_短信服务-阿里云
阿里云等4家企业违反《网络安全法》被责令整改
投递日志到OSS__logshipper_用户指南_日志服务-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云