GBase 8a MPP Cluster SQL 编码进阶篇
一、概述:
GBase 8a MPP Cluster(以下简称 8a 集群)具有联邦构架、大规模并行计算、海量数据压缩、高效存储结构、智能索引、虚拟集群及镜像、灵活的数据分布、完善的资源管理、在线快速扩展、高并发、高可用性、高安全性、易维护、高效加载等技术特征,
其结构化查询语言符合SQL 92、99标准,支持十大类将近300个实用的内置函数,完整的 DDL(建库建表语句)、DQL(查询语句)、DCL(授权语句)、DML(写语句) 语法集;
丰富的正则匹配函数和关键字,支持分区表查询、分层查询、common table expression、MERGR INTO 等语法。
本章重点主题:
1、常用内置函数;
2、DQL 进阶;
3、DML 进阶;
二、常用内置函数
(一)函数体系

8a 集群有四大类函数:内置函数是内建在数据库引擎内的SQL类函数;存储程序是扩展的SQL类函数;UDF 和 UDAF 是 C/C++ 编写的扩展函数,其中 UDF 还可以使用 Python 语言编写。UDF 和 UDAF 函数最适合的开发人员是:对 GBASE 数据库非常熟悉的南大通用研发工程师。存储程序、内置函数是数据分析工程师需要掌握的。
(二)内置函数的基本概念:
内置函数是在 SQL 语句中使用的、内置(Built-In)在数据库引擎中的函数。
1、十大类、将近三百个内置函数,大大简化数据处理过程。
2、内置函数直接在SQL文中使用。
3、内置函数Built-In 在数据库引擎内部:支持多线程并行计算。
4、内置函数名称全局唯一,任何数据库标识符不能与之重名。
(三)内置函数的使用位置:
SELECT 的投影列,或在 WHERE 子句的条件表达式中。这里的 WHERE 子句可以从属于 Insert、Delete、Update 语句。
内置函数还可以出现在 GROUP BY子句、HAVING子句、JOIN条件中。在 GROUP BY 和 JOIN 条件中出现内置函数对于性能影响是比较明显的。HAVING子句中出现的内置函数一般是聚合函数,比如 HAVING SUM( {数值型的列} )>100。
(四)内置函数概览
| 函数分类 | 关键字 |
|---|---|
| 数学函数 | ABS、CEIL、FLOOR、MOD、POWER、ROUND…… |
| 日期和时间函数 | NOW、SYSDATE、DAY、ADD_MONTHS、LAST_DAY、NEXT_DAY…… |
| 字符串处理函数 | UPPER、REPLACE、CONCAT、SUBSTRING…… |
| 转换函数 | CAST、CONVERT、TO_NUMBER、TO_CHAR、TO_DATE…… |
| 控制流函数 | CASE…WHEN…ELSE…END、DECODE、IF、IFNULL、NULLIF |
| 正则表达式函数 | regexp_like、regexp_replace、regexp_instr、regexp_substr |
| 聚合函数 | AVG、COUNT、MAX、MIN、SUM、GROUP_CONCAT…… |
| OLAP 函数 | COUNT OVER,GROUP BY CUBE、SUM OVER、RANK… |
| 加密函数 | AES_ENCRYPT、ENCRYPT、MD5、SHA1、SHA |
| 信息函数 | CHARSET、COLLATION、CURRENT_USER、DATABASE、VERSION… |
OLAP 函数在专门的章节讲解。




