扩展SQL
Posted 丹心明月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展SQL相关的知识,希望对你有一定的参考价值。
本章的接下来的小节,介绍如何通过添加以下内容扩展PostgreSQL的SQL查询语言:
-
函数
-
聚合
-
数据类型
-
操作符
-
索引的操作类型
-
相关对象的包
37.1 扩展性如何工作
PostgreSQL之所以可扩展,是因为其操作为系统表驱动的,而无需修改代码或加载第三方模块。
37.2 PostgreSQL类型体系
PostgreSQL的数据类型可分为基本类型、容器类型、域和伪类型。
37.2.1 基础类型
就是那些在SQL语言以下(例如使用C)定义的数据类型,例如integer等。
37.2.2 容器类型
容器类型即可包含多个其他类型值的数据类型,PostgreSQL提供了三种容器类型:
-
数组;
-
复合数据类型;
-
范围数据类型;
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 ROUTINE和 DROP ROUTINE来对存储过程或函数进行操作。不过,没有CREATE ROUTINE命令。
以上是关于扩展SQL的主要内容,如果未能解决你的问题,请参考以下文章