GBase 8a学习总结Word文档下载推荐.docx
- 文档编号:20673510
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:25
- 大小:35.13KB
GBase 8a学习总结Word文档下载推荐.docx
《GBase 8a学习总结Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《GBase 8a学习总结Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
INT(INTEGER)
-2
4
BIGINT
—92233726
8
FLOAT
—3.40E+38
3。
40E+38
DOUBLE
-1.7976931348623157E+308
1、7976931348623157E+308
DECIMAL[(M[,D])]
-(1E+M -1)/(1E+D)
(1E+M—1)/(1E+D)
动态计算
1.1.2字符类型
GBase8aMPPCluster 目前支持三种字符类型,如下表所示:
最大长度(字符)
备注
CHAR
255
不足指定长度,右边空格补充
VARCHAR
10922
不足指定长度,不会补充
TEXT
10922
不能为它指定DEFAULT 值
1.1.3二进制数据类型
GBase 8aMPPCluster目前支持以下二进制数据类型,如下表所示:
最大长度(字节)
BLOB
32767
使用BLOB数据类型,有如下约束:
Ø
BLOB列支持32KB得存储容量。
创建表时,BLOB列不可以有DEFAULT 值。
查询语句中,BLOB 列不支持过滤条件。
查询语句中,BLOB 列不支持OLAP函数。
1.1.4日期与时间类型
格式
DATE
0001-01-01
9999-12-31
YYYY-MM—dd
DATETIME
0001—01-01
00:
00、000000
9999—12—31
23:
59:
59
YYYY-MM-dd
HH:
MI:
SS、ffffff
-838:
59:
59
838:
59
HHH:
MI:
SS
TIMESTAMP
1970-01—01
08:
00:
01
2038—01-01
59:
YYYY-MM—DD
HH:
MI:
SS
TIMESTAMP使用限制:
以下限制说明,就是针对TIMESTAMP数据列自动更新时得场景:
1、在一张表中,只能自动更新表中第一个出现得TIMESTAMP列,并且必
须使用DEFAULTCURRENT_TIMESTAMPONUPDATE CURRENT_TIMESTAMP
来定义、
2。
在一张表中,使用DEFAULTCURRENT_TIMESTAMPONUPDATE
CURRENT_TIMESTAMP来指定TIMESTAMP 列自动更新时,只能使用一次,
且用于第一个TIMESTAMP 列、
从不同节点发起得SQL语句,TIMESTAMP列更新得时间为发起节点得
本地时间;
如果从不同得发起点发起SQL,而各个节点得本地时间又
不同步,则无法保证TIMESTAMP 列更新值一致。
1.2SQL语言基础
本章对GBase8aMPPCluster得SQL 语句得下列元素进行讨论:
数值,例如字符串与数字;
标识符,比如表与列名字;
用户与系统变量;
注释。
1.2.1数值
这部分主要介绍在GBase8aMPPCluster中使用得数值、包括字符串,数字,十六进制值,布尔值与NULL、
1.2.1.1字符串
字符串就是多个字符组成得一个字符序列,由单引号‚’‛或双引号‚"‛字符包围、
例如:
'
astring’
在一个字符串中,确定得序列具有特殊得含义,每个序列以反斜线符号‚\‛开头,称为转义字符。
GBase8aMPPCluster识别下列转义字符:
转义字符
描述
\0
ASCII0(NUL)字符。
\’
ASCII39单引号‚'‛字符、
\”
ASCII34 双引号‚"
‛字符。
\b
ASCII8退格符。
\n
ASCII10换行符。
\r
ASCII13回车符。
\t
ASCII9制表符(TAB)、
\\
ASCII92反斜线‚\‛字符。
如果用户想要把二进制数据插入到BLOB字段中,下列字符必须由转义序列表示:
字符
NUL
NULbyte(ASCII0)、需要用‚\0‛(一个反斜线与一个ASCII‚0‛字符)表示。
\
反斜线(ASCII92)。
需要用‚\\‛表示。
’
单引号(ASCII 39)。
需要用‚\'
‛表示。
”
双引号(ASCII34)。
需要用‚\"
1.2.1.2数字
整数被表示为一个数字序列。
浮点数使用‚、‛作为一个十进制数得分隔符、这两个数字类型可以前置‚-‛以表示一个负值。
有效整数得示例:
1221、0、-32
有效浮点数得示例:
-32032。
6809E+10、148。
00E+13
1.2.1.3十六进制值
GBase8aMPP Cluster 支持十六进制数值、
在数字得上下文语境中,它们作为等价于整数使用。
在字符串得上下文语境中,它们作为一个字符串,每一对十六进制数字被解释为对应ASCII码得字符。
十六进制转字符,表达式‚x'
hexstring’‛就是基于标准SQL得,表达式0x就是基于ODBC 得。
二者就是等价得。
使用HEX()函数可以将一个字符串或数值转换为一个十六进制格式得字符串。
1.2.1.4布尔值
常量TURE 相当于1,而常量FALSE 相当于0、
常量得名字对大小写不敏感、
示例1:
查询TRUE 与FALSE 对应得值。
gbase>
SELECT TRUE,true,FALSE,falseFROMt;
+———-——+—--—--+--———-—+—--—-—-+
|TRUE|TRUE| FALSE|FALSE |
+———--—+--——--+—--——--+—--—-—-+
|1| 1|0| 0|
+--—-——+-—--—-+-———-——+———-——-+
1rowinset
1.2.1.5NULL值
NULL不区分大小写。
注意:
NULL 值不同于数字类型得0 或字符串类型得空串。
1.2.2数据库、表、列与别名
数据库、表、列与别名等都就是标识符,这部分描述GBase8a MPPCluster中标识符允许得语法规则、
下面得表描述了对于每一个类型标识符允许得最大长度与可使用得字符、
标识符
允许得字符
数据库
52
a~z、A~Z、0~9、下划线,必须以字母或下划线开头。
表
a~z、A~Z、0~9、下划线,必须以字母或下划线开头。
视图
a~z、A~Z、0~9、下划线,必须以字母或下划线开头、
列
a~z、A~Z、0~9、下划线,必须以字母或下划线开头。
别名
a~z、A~Z、0~9、下划线,必须以字母或下划线开头。
存储过程
52
a~z、A~Z、0~9、下划线,必须以字母或下划线开头、
实际应用系统中,标识符不得使用GBase8aMPP Cluster得保留字,也不能包含特殊字符。
1.2.3标识符限定词
GBase8aMPPCluster允许名称由一个或多个标识符组成。
组合名称得各个组成成分应该用英文句号字符‚。
‛分割开。
组合名称得开始部分做为限定词来使用,它影响了上下文中后面得标识符得解释。
在GBase8a MPPCluster 中,用户可以使用下列表格中得任一种方式引用一个列:
列引用
含义
col_name
列col_name来自查询所用得任何一个表中对应字段。
table_name.col_name
列col_name来自当前数据库中得表table_name。
database_name、table_name、col_name
列col_name来自数据库database_name中得表table_name。
`column_name`
该字段就是一个关键词或包含特殊字符。
组合标识符如果需要引用则标识符得各部分都要各自引用,而不就是把组合标识符作为一个整体来引用。
`gs-table`。
`gs—column`合法,whereas`gs-table、gs—column`不合法。
在一条语句得列引用中,不需要明确指定一个table_name 或database_name.table_name前缀,除非这个引用存在二义性。
例如,假设表t1与t2均包含一个字段c,当用一个使用了t1与t2得SELECT 检索c 时,在这种情况下,字段c存在二义性,因为它在这个语句所使用得表中不就是唯一得,因而必须通过写出t1.c或t2。
c来指明用户所需得就是哪个表、同样得,如果从数据库db1得表t 与数据库db2 得表t中检索,用户必须用db1、t、col_name与db2、t、col_name 来指定引用哪个库表得列。
1.2.4注释语法
GBase8aMPP Cluster支持三种注释风格。
#到该行结束。
—-到该行结束。
注意‚——‛(引导号)注释风格要求第二个引导号后至少跟着一个空格(或者一个控制字符例如换行)。
这个语法与标准得SQL注释风格有点不同、
/*行中间或多个行*/。
这个封闭得序列不一定在同一行表示,因此该语法允许多行注释。
1.2.5用户变量
GBase8aMPPCluster支持用户变量。
用户变量得生命周期就是会话级得,对其它会话不可见、当用户退出时,此用户得所有用户变量会自动释放、
用户变量得写法就是:
@var_name。
一个变量名可以由a~z、A~Z、0~9、下划线组成,必须以字母或下划线开头。
用户变量名大小写不敏感。
通过SET语法来定义并为变量赋值、
SETvar_name=expr[,@var_name = expr]、、、
‚=‛就是赋值操作符、赋给每一个变量得expr值可以就是整数、实数、字符串、或NULL。
通过SELECT语法查瞧用户变量得值、
SELECT@var_name [,@var_name]。
、、
使用SET语句为变量赋值。
gbase>SET @t1='
abc',t2=null,@t3=4;
QueryOK, 0rows affected
gbase〉SELECTt1,@t2,t3;
+——--—-+-——-——+-—---—+
|@t1|t2 |@t3 |
+—-———-+-—---—+------+
|abc |NULL|4 |
+——-—--+----——+---———+
1 rowinset
用户变量可以用于表达式所允许得任何地方。
注意,必须明确指定常量得上下文中不能使用变量,例如,在SELECT得LIMIT子句中。
如果用户使用得变量没有初始化,那么它得值就为NULL。
1.3操作符与函数
在SQL语句中可以使用表达式,表达式可以包含常量,字段,NULL,操作符与函数、本章描述GBase8aMPP Cluster中用于写在表达式中得操作符与函数。
包含NULL得表达式总就是得出NULL值结果,除非表达式中得操作与函数在文档中有另外得说明、
1.3.1操作符
1.3.1.1操作符优先级
操作符优先级在下面列出,从最高到最低。
同一行得操作符具有同样得优先级、
BINARY,COLLATE
!
-(unaryminus),~(unarybitinversion)
^
*,/,DIV,%,MOD
—,+
<<
>
〉
&
|
=,〈=〉,>=,>
<=,〈,〈〉,!
=,IS,LIKE,REGEXP,IN
BETWEEN,CASE,WHEN,THEN,ELSE
NOT
AND
OR,XOR
:
=
1.3.1.2圆括号
(。
。
、)
括号,使用它来规定一个表达式得运算顺序,放在括号里得操作符优先执行。
不使用括号,表达式先执行乘法操作,再执行加法操作。
gbase>SELECT1+2*3 FROM t;
+-—----—+
| 1+2*3 |
+—------+
| 7|
+--——--—+
1rowinset
示例2:
使用括号,表达式先执行括号中得加法操作,再执行括号外得乘法操作。
gbase>
SELECT(1+2)*3FROMt;
+—--—----—+
|(1+2)*3|
+————-——--+
|9 |
+————--—--+
1rowin set
1.3.1.3比较函数与操作符
比较运算得结果就是1(TRUE)、0((FALSE)或NULL。
这些运算可用于数字与字符串上。
根据需要,字符串将会自动地被转换到数字,而数字也可自动转换为字符串、
说明:
本章中得一些函数(如GREATEST()与LEAST())得所得值虽然不包括1(TRUE)、0(FALSE)或NULL,但对参数值进行比较时,也会基于下述规则。
GBase8aMPPCluster使用下列规则进行数值比较:
●如果一个或两个参数就是NULL,比较得结果就是NULL,除了<
=〉比较符(含有NULL参数时,比较结果不就是NULL)。
●如果在一个比较操作中两个参数均就是字符串,它们作为字符串被比较。
●如果两个参数均就是整数,它们作为整数被比较。
●如果比较操作中,一个参数为字符串,另一个为整数,则以操作符左侧参数得数据类型为准。
●十六进制值如果不与一个数字进行比较,那么它将当作一个二进制字符串。
●如果参数之一就是DATETIME列,而另一参数就是一个常量,在比较执行之前,这个常量被转换为一个时间戳。
需要注意得就是IN()中得参数不就是这样得。
为了安全起见,建议用户在比较时使用完整得DATETIME/DATE/TIME字符串。
●在所有其它情况下,参数作为浮点(REAL)数字被比较、
●要转换一个值成为一个特殊得类型,用户可以使用CAST()函数。
GBase8aMPPCluster主要得比较函数与操作符包括:
1.3.1.3.1=等于
a=b
如果两个操作数相等,则返回1、
1.3.1.3.2<=>
NULL值安全等于
NULL值安全等于。
这个操作符像‚=‛操作符一样执行相等比较。
如果所有得操作数就是NULL,那么返回得就是1而不就是NULL。
如果有且只有一个操作数就是NULL,那么返回得就是0而不就是NULL。
1.3.1.3.3〈>,!
=不等于
a〈〉b或a!
=b
如果两个操作数不相等,则返回1。
1.3.1.3.4<= 小于或者等于
a〈=b
如果a小于或等于b,则返回1。
1.3.1.3.5<
小于
a<
b
如果a小于b,则返回1。
1.3.1.3.6>
=大于或者等于
a〉=b
如果a 大于或等于b,则返回1、
1.3.1.3.7>
大于
a>b
如果a大于b,则返回1。
1.3.1.3.8is boolean_value,isnot boolean_value
根据一个布尔值来检验一个值,此处得布尔值可以就是TRUE、FALSE或
UNKNOWN。
1.3.1.3.9expr BETWEENminAND max
如果expr得值在min与max之间(包括min与max),返回1,否则返回0、
若所有参数都就是同一类型,则上述关系相当于表达式(min〈=exprAND expr〈=max)。
其它类型得转换根据本章开篇所述规律进行,且适用于三种参数中任意一种。
1.3.1.3.10exprNOTBETWEENminAND max
等同于NOT(exprBETWEENminANDmax)。
1.3.1.3.11COALESCE(value,。
.。
)
返回值为列表当中得第一个非NULL值,在全部为NULL 值得情况下返回值为NULL。
1.3.1.3.12GREATEST(value1,value2,。
、。
当有两个或多个参数时,返回值为最大得参数值。
当参数中有一个为NULL时,直接返回NULL。
当参数都就是字符串时,默认就是不区分大小写得,如果希望字符串值得参数进行大小写敏感,则在需要敏感得字符串参数前加上BINARY、
这些参数比较使用下列规则:
●如果返回值在INTEGER 上下文中或者所有得参数就是整型值,那么它们使用整数比较;
●如果返回值在REAL 上下文中或者所有得参数就是实数值,那么它们使用实数比较;
●如果所有得参数就是大小写敏感得字符串,那么参数比较也就是大小写敏感得;
●其它情况下,参数比较大小写不敏感、
1.3.1.3.13expr IN (value,.。
如果expr 就是IN 列表中得任一值,它将返回1,否则返回0。
如果所有得值均就是常量,那么所有得值被按照expr得类型进行计算与排序。
1.3.1.3.14expr NOT IN(value,。
等价于NOT(exprIN(value,.、、))、
1.3.1.3.15ISNULL(expr)
如果expr为NULL,ISNULL()得返回值为1,否则返回值为0。
1.3.1.3.16LEAST(value1,value2,。
.)
有两个或者更多得参数,返回最小得参数值。
假如任意一个变量为NULL,则LEAST()得返回值为NULL。
LEAST()对参数进行比较所依据得规则同GREATEST()相同。
1.3.1.4逻辑操作符
在SQL 中,所有得逻辑操作符返回得值均为TRUE、FALSE或NULL(UNKNOWN),它们就是由1(TRUE)、0(FALSE)与NULL 来实现得。
1.3.1.4.1NOT,!
逻辑非
如果操作数为0,返回1;
如果操作数为非零,返回0;
如果操作数为NULL,返回NULL。
1.3.1.4.2XOR逻辑异或
当任意一个操作数为NULL时,返回值为NULL、
对于非NULL得操作数:
真
(1)异或假(0)得结果就是真,假(0)异或真
(1)得结果也就是真、
真
(1)异或真
(1)得结果就是假,假(0)异或假(0)得结果就是假。
就就是说两个值不相同,则异或结果为真,反之,为假。
1.3.1.5转换操作符与函数
1.3.1.5.1BINARY
在字符串前使用BINARY操作符,可以使得参数值得比较区分大小写。
1.3.1.5.2CAST与CONVERT函数
CAST(expr AStype),CONVERT(expr,type),CONVERT(exprUSINGtranscoding_name)
CAST()与CONVERT()函数可以用于将一个类型得数值转换到另一个类型。
type可以就是下列值之一:
CHAR、DATE、DATETIME、DECIMAL、TIME
CAST()与CONVERT(、。
.USING。
.)就是标准得SQL 语法、
CAST(strASBINARY)等价于BINARYstr。
CAST(exprAS CHAR)把表达式瞧作就是默认字符集中得字符串、
一个CAST()到DATE,DATETIME,或TIME只就是标识此列,使其变为一个指定得数据类型,而不就是改变列得值。
CAST()得最终执行结果将会转化为正确得列类型。
1.3.2控制流函数
1.3.2.1CASE
CASEvalueWHEN[compare-value]THENresult [WHEN[compare-value]THENresult、。
.][ELSEresult]END
逐一匹配,当满足value=pare—value时,返回对应得result,如果未找到匹配项,则返回ELSE后得result。
如果没有ELSE子句,默认返回NULL。
CASEWHEN [condition]THENresult[WHEN [condition]THEN result.、、][ELSE result] END
逐一判断,当condition为TRUE时,返回对应得result,如果condition全为FALSE,则返回ELSE 后得result、如果没有ELSE子句,默认返回NULL、
一个CASE表达式得默认返回值类型就是所有返回值得相容集合类型,具体情况视其所在语境而定:
●如用在字符串语境中,则返回结果为字符串;
●如用在数字语境中,则返回结果为十进制值得实数值或整数值。
1.3.2.2DECODE
DECODE(value,value1,result1,value2,result2, value3,result3,.、. ,result)
类似于CASEvalueWHERvalue1THENvalue1,唯一区别就是如果value为null值,可以与后面得null值匹配。
1.3.2.3IF(expr1,expr2,expr3)
如果expr1为TRUE (expr1<
>
0 andexpr1<
〉NULL),则IF()得返回值为expr2;
否则返回值为expr3。
IF()得返回值规则同CASE表达式返回值得规则。
1.3.2.4IFNULL(expr1,expr2)
如果expr1不为NULL,则IFNULL()得返回值为expr1,否则其返回值为expr2。
IFNULL()得返回值就是数字或就是字符串,具体情况取决于使用它得上下文环境。
等价于IF(expre1,expre1,expre2)、
1.3.2.5NULLIF(expr1,expr2)
如果expr1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GBase 8a学习总结 学习 总结