GaussDB数据库基础函数介绍-下

news2024/7/6 19:16:33

  接上一篇,本节继续介绍GaussDB数据库常用基础函数

目录

5、范围函数

6、窗口函数

7、聚集函数

8、安全函数

9、系统信息函数

10、动态脱敏函数

GaussDB常用基础函数介绍与示例

5、范围函数

在GaussDB数据库中,范围函数是指用于处理数据库范围的函数。以下是一些常见的数据库范围函数:

--numrange(numeric, numeric, [text])

--描述:表示一个范围。

--返回类型:范围元素类型

--lower(anyrange)

--描述:范围的下界。

--返回类型:范围元素类型

--upper(anyrange)

--描述:范围的上界

--返回类型:范围元素类型

--isempty(anyrange)

--描述:范围是否为空

--返回类型:Boolean

SELECT numrange(1,2.5) AS RESULT1

      ,numrange(1,2.5, '()') AS RESULT2

      ,lower(numrange(1,2.5)) AS RESULT3

      ,upper(numrange(1,2.5)) AS RESULT4

      ,isempty(numrange(1,2.5)) AS RESULT5 ;     

6、窗口函数

在GaussDB数据库中,窗口函数是指用于处理窗口(例如表的行级别或列级别)的函数。这些函数通常用于查询、更新和排序数据,以确保数据的正确性和完整性。

列存表目前只支持rank(expression)和row_number(expression)两个函数。

窗口函数与OVER语句一起使用。OVER语句用于对数据进行分组,并对组内元素进行排序。窗口函数用于给组内的值生成序号。

窗口函数中的order by后面必须跟字段名,若order by后面跟数字,该数字会被按照常量处理,因此对目标列没有起到排序的作用。

以下是一些常见的数据库窗口函数:

--RANK()

--描述:RANK函数为各组内值生成跳跃排序序号,其中,相同的值具有相同序号。

--返回值类型:BIGINT

--ROW_NUMBER()

--描述:ROW_NUMBER函数为各组内值生成连续排序序号,其中,相同的值其序号也不相同。

--返回值类型:BIGINT

7、聚集函数

在GaussDB数据库中,数据库聚集函数是指用于对数据库中的数据进行聚合计算的函数。这些函数通常用于处理大量数据,例如表中的行数据。

以下是一些常见的数据库聚集函数:

--sum(expression)

--描述:所有输入行的expression总和。

--返回类型: 通常情况下输入数据类型和输出数据类型是相同的,但以下情况会发生类型转换:

--对于SMALLINT或INT输入,输出类型为BIGINT。

--对于BIGINT输入,输出类型为NUMBER 。

--对于浮点数输入,输出类型为DOUBLE PRECISION。

--max(expression)、min(expression)

--描述:所有输入行中expression的最大值、最小值。

--参数类型:任意数组、数值、字符串、日期/时间类型。

--返回类型:与参数数据类型相同

--avg(expression)

--描述:所有输入值的均值(算术平均)。

--返回类型:对于任何整数类型输入,结果都是NUMBER类型。对于任何浮点输入,结果都是DOUBLE PRECISION类型。否则和输入数据类型相同。

--count(expression) 描述:返回表中满足expression不为NULL的行数。  count(*) 描述:返回表中的记录行数。

--返回类型:BIGINT

select sum(column1),max(column1),min(column1),avg(column1),count(column1),count(*) from test1

--array_agg(expression)

--描述:将所有输入值(包括空)连接成一个数组。

--返回类型:参数类型的数组

--string_agg(expression, delimiter)

--描述:将输入值连接成为一个字符串,用分隔符分开。

--返回类型:和参数数据类型相同。

select array_agg(column1),string_agg(column1,'|') from test1

--listagg(expression [, delimiter]) WITHIN GROUP(ORDER BY order-list)

--描述:将聚集列数据按WITHIN GROUP指定的排序方式排列,并用delimiter指定的分隔符拼接成一个字符串。

--expression:必选。指定聚集列名或基于列的有效表达式,不支持DISTINCT关键字和VARIADIC参数。

--delimiter:可选。指定分隔符,可以是字符串常数或基于分组列的确定性表达式,缺省时表示分隔符为空。

--order-list:必选。指定分组内的排序方式。

--返回类型:text

select  column1,listagg(column2,'|') within group(order by column1) from test1 group by column1;

8、安全函数

在GaussDB数据库中,安全函数是指用于提高数据库安全性的函数。这些函数通常用于检查和处理数据库操作时可能出现的数据安全情况,例如加密等。

以下是一些常见的数据库安全函数:

--gs_encrypt_aes128(encryptstr,keystr)
--描述:使用基于keystr派生出的密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,并且至少包含大写字母、小写字母、数字和特殊字符中的三种字符。
--支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。
--返回值类型:text
--返回值长度:至少为92字节,不超过4*[(Len+68)/3]字节,其中Len为加密前数据长度(单位为字节)。
--说明:由于该函数的执行过程需要传入口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。

--gs_decrypt_aes128(decryptstr,keystr)
--描述:使用基于keystr派生出的密钥对decrypt字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正确解密。keystr不得为空。
--说明:此函数需要结合gs_encrypt_aes128加密函数共同使用。
--返回值类型:text

--加密
SELECT gs_encrypt_aes128('123','P@ssw0rd');

--解密
select gs_decrypt_aes128('XG09Q6u9VOBUf+eWC6/COTR3PX+AYm+G6vcMbdqjG8muGsGYplPdXP2vPVFRyU+vGLUHtbNWaxnpAO+6pGKSq9bLsIU=','P@ssw0rd')

--gs_encrypt(encryptstr,keystr, encrypttype)
--描述:根据encrypttype,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为8~16字节,至少包含3种字符(大写字母、小写字母、数字、特殊字符), encrypttype可以是aes128或sm4。
--返回值类型:text
--说明:由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。

--gs_decrypt(decryptstr,keystr,decrypttype)
--描述:根据decrypttype,以keystr为密钥对decrypt字符串进行解密,返回解密后的字符串。
--解密使用的decrypttype 及keystr必须保证与加密时使用的encrypttype 及keystr一致才能正常解密。keystr不得为空。decrypttype可以是aes128或sm4。
--此函数需要结合gs_encrypt加密函数共同使用。
--返回值类型:text
--说明:由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将包含该函数名字样的SQL记录入执行历史;即无法在gsql里通过上下翻页功能找到该函数的执行历史。

SELECT gs_encrypt('123','P@ssw0rd','sm4'),gs_encrypt('123','P@ssw0rd','aes128'); 

select gs_decrypt('h4NdduY5s7++5Qp7m1pgdgKORQ==','P@ssw0rd','sm4')
      ,gs_decrypt('roBb4Wg/GjiW9g6gfpth7+ZliaCoYI+/nQd5FruETUpnOcj2veZ3gulEyxLnGh02tUj1/mdL4NJPaeNi3WAskdTs3wU=','P@ssw0rd','aes128')
;

9、系统信息函数

在GaussDB数据库中,主要是包含数据库相关的信息,例如数据库系统版本信息、状态信息、用户信息等,这些系统信息函数通常用于数据库管理系统中,用于管理和监控数据库的运行状态和性能指标。

以下是一些常见的数据库系统信息函数:

--current_catalog

--描述:当前数据库的名称(在标准SQL中称"catalog")。

--返回值类型:name

--current_database()

--描述:当前数据库的名称。

--返回值类型:name

--current_schema()

--描述:当前模式的名称。

--返回值类型:name

--备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。

SELECT current_catalog,current_database(),current_schema();

--current_user

--描述:当前执行环境下的用户名。

--返回值类型:name

--备注:current_user是用于权限检查的用户标识。通常,他表示会话用户,但是可以通过SET ROLE改变他。在函数执行的过程中随着属性SECURITY DEFINER的改变,其值也会改变。

--definer_current_user

--描述:当前执行环境下的用户名。

--返回值类型:name

--备注:大多数情况下definer_current_user和current_user结果相同,但在存储过程中执行该函数会返回定义当前存储过程的用户名。

select current_user,definer_current_user();

--inet_client_addr()

--描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。

--说明:此函数只有在远程连接模式下有效。

--返回值类型:inet

--inet_client_port()

--描述:连接的远端端口。inet_client_port返回当前客户端的端口号。

--说明:此函数只有在远程连接模式下有效。

--返回值类型:int

--inet_server_addr()

--描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。

--说明:此函数只有在远程连接模式下有效。

--返回值类型:inet

--inet_server_port()

--描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。

--说明:此函数只有在远程连接模式下有效。

--返回值类型:int

SELECT  inet_client_addr(),inet_server_port(),inet_server_addr(),inet_server_port();

--pg_postmaster_start_time()

--描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。

--返回值类型:timestamp with time zone

select  pg_postmaster_start_time() ;

--opengauss_version()

--描述:引用的openGauss内核版本信息。

--返回值类型:text

--version()

--描述:版本信息。version返回一个描述服务器版本信息的字符串。

--返回值类型:text

--getdatabaseencoding()

--描述:获取数据库编码方式。

--返回值类型:name

select opengauss_version(),version(),getdatabaseencoding();

--session_user

--描述:会话用户名。

--返回值类型:name

--备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。

--user

--描述:等价于current_user。

--返回值类型:name

--getpgusername()

--描述:获取数据库用户名。

--返回值类型:name

SELECT session_user,user,current_user;

--pg_get_tabledef(table_name)

--描述:根据table_name获取表定义。

--返回类型:text

--备注:pg_get_tabledef重构出表定义的CREATE语句,包含了表定义本身、索引信息、comments信息。

--对于表对象依赖的group、schema、tablespace、server等信息,需要用户自己去创建,表定义里不会有这些对象的创建语句。

--pg_get_viewdef(view_name)

--描述:为视图获取底层的SELECT命令

select * from pg_get_tabledef('test1'),pg_get_viewdef('test1_view');

--has_any_column_privilege(user, table, privilege)

--描述:指定用户是否有访问表任何列的权限。

--返回类型:Boolean

--has_any_column_privilege(table, privilege)

--描述:当前用户是否有访问表任何列的权限,合法参数类型见表2。

--返回类型:Boolean

--has_column_privilege(user, table, column, privilege)

--描述:指定用户是否有访问列的权限。

--返回类型:Boolean

--has_column_privilege(table, column, privilege)

--描述:当前用户是否有访问列的权限,合法参数类型见表3。

--返回类型:Boolean

--以上的table、column 可以替换成database、function、schema、sequence、tablespace等对象

--参数privilege:SELECT:允许对表的指定列执行SELECT语句。  INSERT:允许对表的指定列执行INSERT语句。UPDATE:允许对表的指定列执行UPDATE语句。

--REFERENCES:允许创建一个外键约束。COMMENT:允许对表的指定列执行COMMENT语句。

select has_any_column_privilege('root','test1','select'),has_any_column_privilege('test1','select')

10、动态脱敏函数

在GaussDB数据库中,动态脱敏函数是指根据用户输入的查询条件动态生成敏感信息,并进行脱敏处理的函数。这些函数通常用于对用户输入的敏感数据进行脱敏处理,以保护数据的安全性和隐私性。

以下是一些常见的数据库动态脱敏函数:

--creditcardmasking(col text, letter char default 'x')

--描述:将col字符串后四位之前的数字使用letter替换。

--参数:待替换的字符串、替换字符。

--返回值类型:text

--alldigitsmasking(col text, letter char default '0')

--描述:将col字符串中出现的数字使用letter替换。

--参数:待替换的字符串、替换字符。

--返回值类型:text

--randommasking(col text)

--描述:将col字符串中的字符随机化。

--参数:待替换的字符串、替换字符。

--返回值类型:text

--shufflemasking(col text)

--描述:将col字符串中的字符乱序排列。

--参数:待替换的字符串、替换字符。

--返回值类型:text

select creditcardmasking('15021750702', '*'),alldigitsmasking('123abc','0'),randommasking('123abc'),shufflemasking('123abc');

本次介绍到此结束, 更多函数可参考官网资料文档~ 欢迎大家交流、学习!

https://support.huaweicloud.com/opengauss/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux — 线程池及多线程结尾

目录 一、线程池 线程池的应用场景: 线程池示例: 二、线程安全的单例模式 什么是单例模式 什么是设计模式 单例模式的特点 饿汉实现方式和懒汉实现方式 三、STL,智能指针和线程安全 四、其他常见的各种锁 五、读者写者问题(了解) 读写锁 读写…

搭建Stable Diffusion WebUI详细过程

文章目录 1、环境搭建1.1、GPU服务器选择1.2、配置服务器环境 2、源码和模型下载3、安装依赖库文件4、运行项目5、视频教程 1、环境搭建 为了方便,这里直接选择Vultr提供的已安装Anaconda的Ubuntu 22.04系统。 如果你自己电脑有足够的显存,你也可以在自…

Nacos Config 配置帐号密码加密后,注入过程中如何解密?

背景 线上项目规定不能在配置文件中出现帐号、密码的明文信息,所以必须加密。 引入 Nacos Config 配置后,Nacos Config 帐号密码、加密,服务注册发现也用相同的 nacos 帐号密码,那么如何解密才能保证 Nacos Config 服务能够正确…

【C语言】typedef关键字

文章目录 一. 使用介绍1. 对一般类型进行重命名2. 对结构体类型进行重命名3. 对指针进行重命名4. 对数组进行重命名 二. typedef 和 #define 的区别 一. 使用介绍 typedef 的作用就是对类型进行重命名,具体作用在以下几个方面: 对一般类型进行重命名对…

IP协议的相关特性

IP协议的相关特性 🔎地址管理动态分配NATIPv6 🔎IP 地址的组成网络主机号的划分IP 地址分类(A, B, C, D, E)子网掩码特殊的 IP 地址 🔎路由选择 图片来自网络 🔎地址管理 IP地址, 本质上是一个32位的整数 通常会把32位的整数, 转…

基于ChatGLM-Med与HuaTuo的微调部署

文章目录 ChatGLM-Med推理过程微调过程 HuaTuo配置环境模型下载推理过程微调过程 如何基于领域知识对类ChatGPT模型进行微调,以提升类ChatGPT模型在领域的问答效果? 有下面两个模型,一起来看看微调后的效果如何。 ChatGLM-Med: 基于中文医学知…

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国,信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响,盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明,数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…

【Python】贪吃蛇 —— 无聊必备的小项目

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect个人…

【python】keras包:深度学习( RNN循环神经网络 Recurrent Neural Networks)

RNN循环神经网络 应用: 物体移动位置预测、股价预测、序列文本生成、语言翻译、从语句中自动识别人名、 问题总结 这类问题,都需要通过历史数据,对未来数据进行预判 序列模型 两大特点 输入(输出)元素具有顺序关系…

透过金瑞基金一季度运营报告,看满帮创新故事背后的长期价值

投资中国市场该投哪些行业、哪些公司?在投资界,KraneShares金瑞基金长期致力于为这个问题提供答案。中概投资者都十分熟悉的KWEB——中概互联网指数ETF,就来自金瑞基金。 近日,金瑞基金发布了2023年第一季度运营报告,…

入门款但配置高 极米投影仪Z6X Pro轻松打造家庭影院

近年来,智能投影仪凭借大屏沉浸式体验以及使用场景灵活多变的便利性深受消费者欢迎。现如今,智能投影仪既能替代电视的职能,也能灵活融入小居室、出租屋等生活场景,顺理成章成为年轻人的“潮品”。京东电器2022年发布的《年轻人潮…

BetaFlight统一硬件配置文件研读之dma命令

BetaFlight统一硬件配置文件研读之dma命令 1. 源由2. 代码分析2.1 cliDma2.2 showDma2.3 cliDmaopt 3. 实例分析4. 配置情况4.1 dma4.2 dma show4.3 dma device list4.4 dma pin list4.5 dma device id4.5.1 dma adc id4.5.2 dma TIMUP id4.5.3 dma pin id 4.6 dma device id s…

BI技巧丨计算组单位切换

PowerBI自带的数据显示单位有千、百万、十亿等,很明显这些数据单位有些时候是不太符合国人的使用习惯的。 在计算组出来之前,我们习惯利用配置表的方式,将这种数据单位转换为符合我们习惯的方式;在计算组出来之后,我们…

石油化工企业防雷工程应用解决方案

随着现代石油化工行业的不断发展,防雷工程的重要性也越来越凸显。在石油化工行业中,防雷工程是一项至关重要的工作,因为石油化工行业常常面临雷电等自然灾害的威胁,这些灾害可能导致严重的安全事故和经济损失。石化企业其生产过程…

Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

Vue版本2+模拟VueRouter的history模式

文章目录 分步骤实现创建 VueRouter 类创建静态方法,实现 install实现构造函数实现 createRouteMap实现 initComponents 方法 - router-link实现 initComponents 方法 - router-view实现 initEvents 完整代码 分步骤实现 创建 VueRouter 类 /*** VueRouter Class*…

RHEL软件包管理

3.1 RHEL软件包管理 完善的软件包管理机制对于操作系统来说是非常重要的,没有软件包管理器,用户使用操作系统将会变得非常困难,也不利于操作系统的推广。用户要使用Linux,需要了解Linux的包管理机制。随着Linux的发展&#xff0…

初识Vue-数据

目录 响应式 data prop 单向数据流 Prop属性校验 计算属性(computed) 侦听器(watch) 数组操作 数组操作-解决方案 响应式 data data为什么是函数? 因为只有返回一个生成data的函数,这个组件产生的…

精妙绝伦的算法之舞:解密力扣“删除有序数组中的重复项”

本篇博客会讲解力扣“26. 删除有序数组中的重复项”这道题,这是题目链接。 老规矩,先来审题: 题目有对判题标准的详细解释: 接下来是2个示例: 还有提示: 其实这道题考察的是“去重算法”,即…

【Linux】基础IO_文件描述符与重定向

环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅 相关文章推荐: 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写(含二进制)操作? 【Linux】基础…