第三十七章 扩展SQL

本文详细介绍了如何扩展PostgreSQL的SQL查询语言,包括添加函数、聚合、数据类型、操作符和索引操作类型。还讨论了容器类型如数组、复合数据类型和范围数据类型,以及用户定义的函数和存储过程。此外,提到了多态数据类型和如何创建及管理这些扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章的接下来的小节,介绍如何通过添加以下内容扩展PostgreSQL的SQL查询语言:

  • 函数

  • 聚合

  • 数据类型

  • 操作符

  • 索引的操作类型

  • 相关对象的包

37.1 扩展性如何工作

PostgreSQL之所以可扩展,是因为其操作为系统表驱动的,而无需修改代码或加载第三方模块。

37.2 PostgreSQL类型体系

PostgreSQL的数据类型可分为基本类型、容器类型、域和伪类型。

37.2.1 基础类型

就是那些在SQL语言以下(例如使用C)定义的数据类型,例如integer等。

37.2.2 容器类型

容器类型即可包含多个其他类型值的数据类型,PostgreSQL提供了三种容器类型:

  1. 数组;

  2. 复合数据类型;

  3. 范围数据类型;

37.2.3 域类型

域类型基于基础类型,使用CREATE DOMAIN创建。

37.2.4 伪类型

伪类型不可作为表列的数据类型,但可用以声明函数的参数和结果类型。表8.27列出了现存的伪类型。

37.2.5 多态数据类型

有些伪类型是多态数据类型,其用以声明多态函数。多态类型:

37.3 用户定义函数

PostgreSQL提供四种类型的函数:

  • 查询语言函数(以SQL写的函数);

  • 过程化语言函数(以PL/pgSQL或PL/Tcl等过程语言编写的函数);

  • 内部函数

  • C语言函数

创建函数,请查看CREATE FUNCTION命令。也可在src/tutorial的funcs.c和funcs.sql查看函数示例。

37.4 用户定义存储过程

存储过程与函数类似。唯一区别是,存储过程无返回值。函数可以作为查询或DML的一部分调用,存储过程使用 CALL命令调用。如果CALL命令不是显式事务的一部分,那么存储过程可以在执行过程中进行提交、回滚以及开始新的事务。使用 CREATE PROCEDURE命令创建存储过程。

 

函数和存储过程,统称为日常事务(routine)。所以有命令 ALTER ROUTINEDROP ROUTINE来对存储过程或函数进行操作。不过,没有CREATE ROUTINE命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值