返回首页

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-04-10)
南大通用数据技术股份有限公司
1043
参数名称


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-04-10)
南大通用数据技术股份有限公司
1044
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-04-10)
南大通用数据技术股份有限公司
1045
*************************** 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)

H-N

instr(text,text,int,int)
描述:instr(string1,string2,int1,int2)返回在string1 中从int1 位置开始匹配到第int2 次
string2 的位置,第一个int 表示开始匹配起始位置,第二个int 表示匹配的次数。
返回值类型:int 示例:
gbase=# SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 );
instr
-------
6
(1 row)

instr(string,substring[,position,occurrence])

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
110
描述:
从字符串string 的position
(缺省时为1)
所指的位置开始查找并返回第occurrence
(缺省时为1)次出现子串substring 的位置的值。本函数以字符为计算单位,如一个汉字为
一个字符。

当position 为0 时,返回0。

当position 为负数时,从字符串倒数第n 个字符往前逆向搜索。n 为position 的绝
对值。
返回值类型:integer
示例:
gbase=# SELECT instr('corporate floor','or', 3);
instr
-------
5
(1 row)
gbase=# SELECT instr('corporate floor','or',-3,2);
instr
-------
2
(1 row)

initcap(string)
描述:将字符串中的每个单词的首字母转化为大写,其他字母转化为小写。
返回值类型:text
示例:
gbase=# SELECT initcap('hi THOMAS');
initcap
-----------
Hi Thomas
(1 row)

lengthb(text/bpchar)
描述:获取指定字符串的字节数。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
111
返回值类型:int
示例:
gbase=# SELECT lengthb('hello');
lengthb
---------
5
(1 row)

lengthb(string)
描述:
获取参数string 中字节的数目。
与字符集有关,
同样的中文字符,
在GBK 与UTF8
中,返回的字节数不同。
返回值类型:integer
示例:
gbase=# SELECT lengthb('Chinese');
lengthb
---------
7
(1 row)

left(str text, n int)
描述:
返回字符串的前n 个字符。
当n 是负数时,
返回除最后|n|个字符以外的所有字符。
返回值类型:text
示例:
gbase=# SELECT left('abcde', 2);
left
------
ab
(1 row)

length(string bytea, encoding name )
描述:指定encoding 编码格式的string 的字符数。在这个编码格式中,string 必须是有
效的。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
112
返回值类型:int 示例:
gbase=# SELECT length('jose', 'UTF8');
length
--------
4
(1 row)
如果是查询bytea 类型的长度,指定utf8 编码时,最大长度只能为536870888。

length(string)
描述:获取参数string 中字符的数目。
返回值类型:integer
示例:
gbase=# SELECT length('abcd');
length
--------
4
(1 row)

lower(string)
描述:把字符串转化为小写。
返回值类型:varchar
示例:
gbase=# SELECT lower('TOM');
lower
-------
tom
(1 row)

lpad(string text, length int [, fill text])
描述:通过填充字符fill(缺省时为空白)
,把string 填充为length 长度。如果string 已
经比length 长则将其尾部截断。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
113
返回值类型:text
示例:
gbase=# SELECT lpad('hi', 5, 'xyza');
lpad
-------
xyzhi
(1 row)

lpad(string varchar, length int[, repeat_string varchar])
描述:在string 的左侧添上一系列的repeat_string(缺省为空白)来组成一个总长度为n
的新字符串。
如果string 本身的长度比指定的长度length 长,则本函数将把string 截断并把前面长度
为length 的字符串内容返回。
返回值类型:varchar
示例:
gbase=# SELECT lpad('PAGE 1',15,'*.');
lpad
-----------------
*.*.*.*.*PAGE 1
(1 row)
gbase=# SELECT lpad('hello world',5,'abcd');
lpad
-------
hello
(1 row)

ltrim(string [, characters])
描述:从字符串string 的开头删除只包含characters 中字符(缺省是一个空白)的最长
的字符串。
返回值类型:varchar
示例:
gbase=# SELECT ltrim('xxxxTRIM','x');

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
114
ltrim
-------
TRIM
(1 row)

md5(string)
描述:将string 使用MD5 加密,并以16 进制数作为返回值。
MD5 加密算法安全性低,存在安全风险,不建议使用。
返回值类型:text
示例:
gbase=# SELECT md5('ABC');
md5
----------------------------------
902fbdd2b1df0c4f70b4a5d23525e932
(1 row)

notlike(x bytea name text, y bytea text)
描述:比较x 和y 是否不一致。
返回值类型:bool
示例:
gbase=# SELECT notlike(1,2);
notlike
--------------
t
(1 row)
gbase=# SELECT notlike(1,1);
notlike
--------------
f
(1 row)

nlssort(string text, sort_method text)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
115
描述:
以sort_method 指定的排序方式返回字符串在该排序模式下的编码值,
该编码值
可用于排序,其决定了string 在这种排序模式下的先后位置。目前支持的sort_method 为
'nls_sort=schinese_pinyin_m'和'nls_sort=generic_m_ci'。其中,'nls_sort=generic_m_ci'仅支持
纯英文不区分大小写排序。
string 类型:text sort_method 类型:
text 返回值类型:text
示例:
gbase=# SELECT nlssort('A', 'nls_sort=schinese_pinyin_m');
nlssort
----------------
01EA0000020006
(1 row)
gbase=# SELECT nlssort('A', 'nls_sort=generic_m_ci');
nlssort
------------
01EA000002
(1 row)

参数说明:控制收集数据库I/O 调用时序的统计数据。I/O 时序统计数据可以在
pg_stat_database 中查询。
该参数属于SUSET 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔型

on 表示开启收集功能,开启时,收集器会在重复地去查询当前时间的操作系统,
这可能会引起某些平台的重大开销,故默认值设置为off。

off 表示关闭收集功能。
默认值:off

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1297