扩展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提供了三种容器类型:

  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命令。

以上是关于扩展SQL的主要内容,如果未能解决你的问题,请参考以下文章

mysql小节

Es面试小节

完整开放完一个vue后台管理系统小结

NoSQL是什么?

第二小节之面向对象上

DB - MongoDB