DATABASE
CREATE DATABASE
CREATE DATABASE [IF NOT EXISTS] database_name
CREATE DATABASE 是以给定的名称创建一个数据库。用户需要获得创建数据库的权限,才可以使用 CREATE DATABASE。
示例 1:创建数据库。
gbase> CREATE DATABASE test1;
Query OK, 1 row affected
DROP DATABASE
DROP DATABASE [IF EXISTS] database_name
DROP DATABASE 删除指定的数据库以及它所包含的表。请小心使用此语句!用户需要获得对数据库的 DROP 权限,才可以使用 DROP DATABASE。
使用关键字 IF EXISTS,以防止由于数据库不存在而报告错误。
示例 1:删除数据库。
gbase> DROP DATABASE IF EXISTS test;
Query OK, 1 row affected
TABLE
在本节中用到的术语如下。
复制表:创建表使用 REPLICATED 关键字,这样创建的表为复制表。复制表将会存储于 GBase 8a MPP Cluster 的各个数据节点上,每个数据节点都会保存完整数据。
随机分布表:不需要使用关键字。数据以随机分配方式,均匀存储到集群各个数据节点。
哈希分布表:创建表时使用 DISTRIBUTED BY column_name 指定创建表中的物理列 column_name 是哈希列,这样创建的表为哈希分布表。数据按照指定的 Hash 字段进行哈希分布。
临时表:创建表时使用 TEMPORARY 关键字,这样创建的表为临时表,临时表仅存在于当前 session 中。
预租磁盘:预租磁盘空间可以预先批量分配磁盘块,这样尽量保证了列的 DC 数据文件磁盘块连续。在顺序读取列 DC 数据时,性能会有明显提升。
表类型: GBase 8a MPP Cluster 数据库主要有以下 4 种表类型。
复制表
随机分布表
哈希分布表
临时表
CREATE TABLE
CREATE TABLE 以用户给定的名字在当前数据库创建一个表。用户必须有创建表的权限。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
[database_name.]table_name
(column_definition [,column_definition], ... [, key_options])
[table_options]
column_definition:
column_name data_type [NOT NULL | NULL] [DEFAULT default_value]
[COMMENT comment_value]
key_options:
KEY key_name ('column_name') [key_dc_size = dc_value USING HASH
GLOBAL]
table_options:
[REPLICATED | DISTRIBUTED BY ('column_name') ]
[COMMENT 'comment_value']参数说明如下:
TEMPORARY:该参数为可选参数,创建临时表需要使用此关键字。临时表的创建请参见‚4.1.2.1.3 CREATE TEMPORARY TABLE‛的内容。
IF NOT EXISTS:该参数为可选参数,用户可以使用关键字 IF NOT EXISTS创建表,如果表已经存在,系统将报告 WARNING 信息。
database_name:该参数为可选参数,指定数据库后,在此数据库下创建表。如果没有显示指定 database_name 参数,创建的表隶属于 USE database_name 后的数据库中的表。
table_name:表命名规则请参见‚2.2 数据库、表、列和别名‛。默认情况下,在当前数据库中创建表。如果没有指定当前数据库或表已经存在,则报告错误信息。
column_name:指定表中的数据列。
data_type:指定数据列的数据类型。数据类型参见‚1 数据类型‛中的内容。
NOT NULL | NULL:指定数据列的值,是否允许为 NULL。如果既没有指定 NULL 也没有指定 NOT NULL,列被视为指定了可以为 NULL。
default_value:指定数据列的默认值。默认值必须是一个常数,而不能是一个函数或者一个表达式。举例来说,用户不能将一个数据列的默认值设置为 NOW()或者 CURRENT_DATE()之类的函数。对于给定的一个表,可以使用SHOW CREATE TABLE 语句来查看哪些列有显式 DEFAULT 子句。
comment_value:指定数据列的备注说明。例如: stu_no id COMMENT '学号'。
key_options:指定表中的 hash 列。同时可以使用 key_dc_size 参数指定创建分段 Hash INDEX。
dc_value 值如下表所示:
最小值 | 最大值 | 备注 |
0 | 2147483646 | 默认为0(即在整列上创建HASH) |
table_options:默认为随机分布表。
REPLICATED:指定是否是复制表。
在创建一个表时,用户可以使用关键词 REPLICATED 来指定是否创建复制表。如果指定了关键词 REPLICATED,那么创建的复制表在 GBase 8a MPP Cluster 的各个节点上存放的是完整数据。
注意: 复制表表名尾部不允许是_n{number}编号,例如, mytable_n1,mytable_n12 是不允许使用的。
DISTRIBUTED BY column_name:指定创建表中的物理列 column_name 是哈希列,这样创建的表,称为哈希分布表。哈希列的值可以为空,但必须是INT 或者 VARCHAR 类型或DECIMAL 类型(执行 OGG Kafka 数据同步时,哈希列的值同样不能为空) 。
key_dc_size = dc_value USING HASH GLOBAL:配合 DISTRIBUTED BY使用,指定分段 HASH 列,同时创建多个分段 HASH 列。
COMMENT:指定表的备注说明。可以用 SHOW CREATE TABLE table_name和 SHOW FULL COLUMNS FROM table_name 语句来显示备注信息。
示例 1: 创建一张随机分布表。
gbase> CREATE TABLE t1(a int, b int) ;
Query OK, 1 row affected
示例 2: 创建一张复制表。
gbase> CREATE TABLE t2(a int, b int) REPLICATED;
Query OK, 1 row affected
gbase> SHOW CREATE TABLE t2;
+-------+-----------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------+
| t2 | CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL
) ENGINE=EXPRESS REPLICATED DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'|
+-------+-----------------------------------------------------------------+
1 row in set
gbase> DESC t2;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| a | int(11) | YES | | NULL | |
| b | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set
示例 3:创建带有列注释信息的表。
gbase> CREATE TABLE t1 (f_username varchar(10) comment 'name' ) ;
Query OK, 0 rows affected
gbase> DESC t1;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| f_username | varchar(10) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
1 row in set
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------+
| t1 | CREATE TABLE "t1" (
"f_username" varchar(10) DEFAULT NULL COMMENT 'name'
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'|
+-------+--------------------------------------------------------+
1 row in set
CREATE TABLE...AS SELECT...
语法格式:
CREATE TABLE table_name [(column_definition,...)] [REPLICATED] [DISTRIBUTED BY] [AS] SELECT ...
功能:
根据列定义以及投影列创建表结构,并且将 SELECT 中查询的数据复制到所创建的表中。
参数说明如下:
REPLICATED:指定创建复制表选项。
DISTRIBUTED BY:指定创建表中的物理列 column_name 是哈希列。
AS:指定 SELECT 语句,可选关键字。
其他参数说明请参见‚4.1.2.1 CREATE TABLE‛参数说明部分的内容。
&nbs