该语句用于在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约束;不支持创建表的同时从其他表导入功能。
参数 | 含义 | 举例 |
CHARACTER SET | 指定该表所有字符串的编码,用于对外提供元数据信息。目前仅支持UTF8MB4。 | CHARACTER SET = 'utf8mb4' |
COMMENT | 添加注释信息。 | COMMENT='create by Bruce' |
COMPRESSION | 存储数据时使用的压缩方法名,目前提供的方法有以下几种: · none(默认值,表示不作压缩)· LZ4_1.0 · LZO_1.0 · SNAPPY_1.0 · ZLIB_1.0 | COMPRESSION = '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 = 5 |
TABLEGROUP | 表所属表格组。 | |
REPLICA_NUM | 这个表的partition总副本数,默认值为3。 | REPLICA_NUM = 3 |
ZONE_LIST | 集群列表 | |
PRIMARY_ZONE | 主集群。 | |
AUTO_INCREMENT | 自增字段初始值 | AUTO_INCREMENT = 5 |
Oceanbase>create table t1 (id int auto_increment,name varchar(20) primary key);
Query OK, 0 rows affected (0.01 sec)
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)
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)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。