返回首页

gbase数据、南大通用产品文档:GBase8s总结

更新日期:2024年09月11日


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 15 -
数据库包含一系列相关信息,但与存储数据的其他方法在基本方式上有所不同。数据库不
仅包含数据,还包含数据模型,数据模型定义每个数据项并指定数据项相对于其他项和现
实世界的意义。
多个用户可同时访问和修改数据库。每个用户具有数据库内容的不同视图,并且可使用若
干方法限制每个用户对那些内容的访问。
关系数据库由表组成,而表由列和行组成。关系模型支持对表的三种基本操作:选择、投
影和连接。
对象关系数据库扩展了关系数据库的功能。可定义新的数据类型来存储和管理音频、视频
和大型文本文档等等。可以定义组合一个或多个现有数据类型的复杂类型,为在列和表中
组织数据提供了更大的灵活性。可以定义继承其它数据库对象的属性的类型和表并添加特
定于所定义对象的新属性。
要使用和查询数据库,使用 SQL 。ANSI 对 SQL 进行了标准化。您可用于提高性能的一
些 GBase 8s 扩展补充了 ANSI 定义的语言。GBase 8s 工具还是得有可能与 ANSI 标准严
格保持一致。
软件的两层结构将您的所有工作与数据库联系起来。底层总是执行 SQL 语句并管理磁盘
和计算机内存中的数据的数据库服务器。上层是许多应用程序(有些来自 GBase ,有些由
您、其他供应商或您的同事编写)之一。中间件是将数据库服务器与应用程序进行链接的
组件,由数据库供应商提供来将客户机程序与数据库服务器绑定在一起。GBase 8s 存储过
程语言(SPL)就是此类工具的一个示例。



GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 16 -
3 编写 SELECT 语句
SELECT 语句是最重要且最复杂的 SQL 语句。可使用它和 SQL 语句 INSERT 、
UPDATE 和 DELETE 操纵数据。可以使用 SELECT 语句从数据库检索数据。将它用作
INSERT 语句的一部分来生成新行或将它作为 UPDATE 语句的一部分来更新信息。
SELECT 语句是查询数据库中信息的主要方法。它是检索程序、报告、表单或电子表格中
的数据的关键。
可以将 SELECT 语句与查询工具 DB-Access 配合使用或在应用程序中嵌入
SELECT 语句。
本章介绍了使用 SELECT 语句查询和检索关系数据库数据的基本方法。
本章讨论如何调整
语句以从一个或多个表中选择信息行和列,如何在 SELECT 语句中包含表达式和函数以
及如何创建数据库表之间的各种连接条件。SELECT 语句的语法和使用方法在 GBase 8s
SQL 指南:语法中有详细描述。
本出版物中的大部分示例来自 stores_demo 数据库中的各表,
该数据库随 GBase 8s SQL API
或数据库实用程序的软件提供。
为了简便起见,
示例只显示了每个 SELECT 语句检索的数
据的一部分。有关演示数据库的结构和内容的信息,请参阅《GBase 8s SQL 参考指南》。
为了着重强调,虽然 SQL 不区分大小写,但是在示例中用大写字母显示关键字。

GLOBAL_DOUBLE_WRITE_STATUS 视图显示GBase 8c 所有实例的双写文件的情况。
它是由每个节点的local_double_write_stat 视图组成,属性完全一致。
名称
类型
描述
node_name
text
节点名称。
curr_dwn
bigint
当前双写文件的序列号。
curr_start_page
bigint
当前双写文件恢复起始页面。
file_trunc_num
bigint
当前双写文件复用的次数。
file_reset_num
bigint
当前双写文件写满后发生重置的次数。
total_writes
bigint
当前双写文件总的I/O 次数。
low_threshold_wri
tes
bigint
低效率写双写文件的I/O 次数(一次I/O 刷页数量
少于16 页面)。
high_threshold_wr
bigint
高效率写双写文件的I/O 次数(一次I/O 刷页数量

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1062
名称
类型
描述
ites
多于一批,421 个页面)。
total_pages
bigint
当前刷页到双写文件区的总的页面个数。
low_threshold_pa
ges
bigint
低效率刷页的页面个数。
high_threshold_pa
ges
bigint
高效率刷页的页面个数。
file_id
bigint
当前双写文件的id 号。

为便于理解以上概念,下表举例说明每种典型场景下查询和结果集,用例使用的建

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
463
表语句和数据为:
create table t (i1 int,
vc1 varchar(10) masked with (function='partial(2,"*****",0)'),
vc2 varchar(10) masked with (function='partial(2,"*****",0)'));
insert into t values (1, 'nblknabpa', 'pombkaia');
insert into t values (2, '.mapkna', '0jbadflk');
insert into t values ();

示例1:第i 类函数case when 脱敏列规则;
gbase>select case i1 when 1 then vc1 when 2 then '12345' else '67890' end as res from t;
+---------+
| res
|
+---------+
| nb***** |
| 12***** |
| 67***** |
+---------+

示例2:第i 类函数coalesce 脱敏列规则;
gbase>select coalesce(vc1,'12345') as res from t;
+---------+
| res
|
+---------+
| nb***** |
| .m***** |
| 12***** |
+---------+

示例3:第i 类函数case when 多脱敏列默认脱敏;
gbase> select case i1 when 1 then vc1 when 2 then vc2 else '67890' end as res from t;
+------+
| res
|
+------+
| xxxx |
| xxxx |
| xxxx |
+------+

示例4:第ii 类函数substring 默认脱敏;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
464
gbase> select substring(vc1, 1, 2) as res from t;
+------+
| res
|
+------+
| xx
|
| xx
|
| NULL |
+------+

示例5:第ii 类函数concat 默认脱敏;
gbase> select concat(vc1,'123') as res from t;
+------+
| res
|
+------+
| xxxx |
| xxxx |
| NULL |
+------+

示例6:第i 类函数嵌套使用;
gbase> select case when i1 > 1 then coalesce(vc1, '12345') else '67890' end as res from t;
+---------+
| res
|
+---------+
| 67***** |
| .m***** |
| 67***** |
+---------+

示例7:第ii 类函数嵌套使用;
gbase> select concat(substring(vc1,1,2),'123') as res from t;
+------+
| res
|
+------+
| xxxx |
| xxxx |
| NULL |
+------+

示例8:第i 类和ii 类函数混合嵌套调用;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
465
gbase> select coalesce(substring(vc1,1,2),'12345') as res from t;
(或者select substring(coalesce (vc1, '12345'), 1, 2) as res from t;)
+------+
| res
|
+------+
| xxxx |
| xxxx |
| xxxx |
+------+

示例9:子查询内或外调用i 类;
gbase> select res from (select coalesce(vc1,'12345')as res from t) as tmp;
(或者select coalesce(vc1, '12345') as res from (select vc1 from t) as tmp;)
+---------+
| res
|
+---------+
| nb***** |
| .m***** |
| 12***** |
+---------+

示例10:子查询内或外调用ii 类;
gbase> select res from (select concat(vc1,'123') as res from t) as tmp;
(或者select concat (vc1, '123') as res from (select vc1 from t) as tmp;)
+------+
| res
|
+------+
| xxxx |
| xxxx |
| NULL |
+------+

示例11:子查询内外调用i 类;
gbase> select case when i1 > 1 then res1 else '67890' end as res from (select i1,coalesce(vc1,
'12345') as res1 from t) as tmp;
+---------+
| res
|
+---------+
| 67***** |
| .m***** |
| 67***** |
+---------+

示例12:子查询内外调用ii 类;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
466
gbase> select concat(res1,'123') as res from (select substring(vc1,1,2) as res1 from t) as tmp;
+------+
| res
|
+------+
| xxxx |
| xxxx |
| NULL |
+------+

示例13:子查询内外混合调用i 类和ii 类。
gbase> select substring(res1,1,4) as res from (select coalesce(vc1, '12345') as res1 from t) as
tmp;
(或者
gbase> select coalesce(res1, '12345') as res from (select substring(vc1,1,2) as res1 from
t) as tmp; )
+------+
| res
|
+------+
| xxxx |
| xxxx |
| xxxx |
+------+
说明
脱敏列脱敏后如果超过脱敏列的最大长度,则自动截断为脱敏列的最大长度。
比如脱敏列定义为:
mask_col varchar(5) masked with (function ='partial(2,"xxxx",2)')
则值“abcde”理论上应脱敏为“abxxxxde”,脱敏后的长度超过了最大长度5,自动截断为
“abxxx”。
脱敏列脱敏后对于一些可设置长度的函数脱敏时也会被截断,比如:
select left(mask_col, 2) from t;
left 函数将使用默认脱敏,理论上应脱敏为“xxxx”,但超过了left 函数设置的最大长度,所
以自动截断为“xx”。
Union、Intersect 和Minus 运算时,对应列的脱敏规则与控制流函数的脱敏规则一致。
比如:
select mask_int_col from t union select mask_int_col as col from t;
将使用mask_int_col 的脱敏规则,而:
select mask_int_col from t union select mask_int_col+1 from t;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
467
将使用默认脱敏。