返回首页

gbase数据、南大通用产品文档:GBase8a创建表时指定行存列

更新日期:2024年09月11日

语法格式
CREATE TABLE [[vc_name.]database_name.]table_name (column-definitions,
[GROUPED_DEFINITIONS]
);
GROUPED_DEFINITION:
GROUPED
[grouped_name](column_references)[COMPRESS(<’method’>,)]
表5- 86 参数说明
参数名称


vc_name
vc 名,可选项。
database_name
数据库名,可选项。
table_name
表名
GROUPED
关键字,表示定义的是行存列。
grouped_name
表示行存列的名称,可以指定行存列名称。如果
不指定名称,则默认为后面的column_references
中第一个列的名称,如果该名称重名,则在名称
后面加上“_#”(#为从2 开始的一个数字)。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1036
参数名称


column_references
行存列中包含的物理列的集合,各列间以“,”分
隔。
COMPRESS(<’method’>,)
为行存列指定压缩算法。具体用法参考压缩章节。
示例
示例1:建表时创建行存列,并指定行存列名称,行存列使用压缩算法。
gbase>
CREATE
TABLE
t(a
int,b
int,c
int,d
int,GROUPED
ga(b,c)
COMPRESS('rapidz',0));
Query OK, 0 rows affected (Elapsed: 00:00:00.19)
gbase> show create table t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "ga" ("b","c") COMPRESS('RapidZ', 0)
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例2:建表时创建行存列,不指定行存列名称。
gbase> CREATE TABLE t(a int,b int,c int,d int,GROUPED (b,c),GROUPED
(d));
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "b" ("b","c"),
GROUPED "d" ("d")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1037
1 row in set (Elapsed: 00:00:00.00)
示例3:建表时创建行存列,指定部分行存列名称。如果行存列名称重名,则在
该名称后面加上“_#”(#为从2 开始的一个数字)。
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t(a int,b int,c int,d int,GROUPED a(b,c),GROUPED
(a));
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "a" ("b","c"),
GROUPED "a_2" ("a")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例4:建表时创建多个行存列,重复指定行存列名称,返回错误码1061。
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t (a int,b int,c int,d int, GROUPED a(b,c),
GROUPED a(d));
ERROR 1702 (HY000): gcluster table error: Duplicate key name 'a'.
示例5:建表时创建多个行存列,并指定行存列名称,使用压缩表语法。
gbase>
DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t(a int,b int,c int,d int,GROUPED a(b,c),GROUPED
b(a,d)) COMPRESS('RapidZ', 0);
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t \G

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1038
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "a" ("b","c"),
GROUPED "b" ("a","d")
) COMPRESS('RapidZ', 0)
ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例6:建表时创建多个行存列,并指定行存列名称,行存列和表都使用压缩语
法。
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase>
CREATE
TABLE
t(a
int,b
int,c
int,d
int,GROUPED
a(b,c) ,GROUPED b(a,d) COMPRESS('HighZ', 0)) COMPRESS('RapidZ',
0);
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t \G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL,
GROUPED "a" ("b","c"),
GROUPED "b" ("a","d") COMPRESS('HighZ', 0)
) COMPRESS('RapidZ', 0)
ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)

在本部分中使用的词语转换是广义的;它包括不经数据类型转换,将数据从一个存储位置
转移至另一个。

功能说明
使用CALL 语句调用已经创建的存储过程。使用SELECT 语句调用函数。
语法格式
CALL [database_name.]proc_name([parameter_1[,…,parameter_n]]);
SET @Variable_name = func_name([parameter_1[,…,parameter_n]]);
SELECT @Variable_name;
表5- 170 参数说明
参数名称


proc_name
要调用的存储过程名称。
parameter
调用参数。如果存储过程有参数,则必须按照存储过程的定
义中的顺序和类型为参数赋值,同时,对于OUT 和INOUT
参数,必须指明OUT 和INOUT 关键字。
func_name
要调用的函数的名称。
Variable_name
变量名,可以将函数的执行结果赋予一个变量。
说明

针对无参数存储过程,
<存储过程名称>后面是否添加括号,
执行结果一致。

GBase 8a MPP Cluster 使用SELECT 语句查看调用函数的执行结果。
示例
示例1:调用存储过程示例。
gbase> USE test;
Query OK, 0 rows affected
gbase> DELIMITER //

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1343
gbase> DROP PROCEDURE proc_count //
Query OK, 0 rows affected
gbase> CREATE PROCEDURE proc_count (OUT param1 INT,IN param2
varchar(10))
BEGIN
SELECT COUNT(*) INTO param1 FROM ssbm.customer
WHERE c_nation= param2;
END //
Query OK, 0 rows affected
gbase> CALL proc_count(@count1, 'JORDAN') //
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> SELECT @count1 ;
+---------+
| @count1 |
+---------+
|
1182 |
+---------+
1 row in set
示例2:调用函数示例。
gbase> USE test;
Query OK, 0 rows affected
gbase> DELIMITER //
gbase> DROP FUNCTION hello //
Query OK, 0 rows affected
gbase> CREATE FUNCTION hello (s CHAR(20)) RETURNS
VARCHAR(50)
RETURN CONCAT('Hello, ',s,'!') //
Query OK, 0 rows affected
gbase> DELIMITER ;
gbase> SET @result = hello('world');
Query OK, 0 rows affected
gbase> SELECT @result;
+------------------------------+
| @result
|
+------------------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1344
| Hello, world
! |
+------------------------------+
1 row in set