PostgreSQL基础知识


PostgreSQL基础知识

文章插图
 
第 1 章 基础知识
PostgreSQL 是一款极其强大的数据库,它的很多特性可能是你前所未见
的 。它的部分特性在其他知名数据库中也有,但名称可能不同 。在深入
钻研官方手册之前,你需要了解一些核心概念,本章将为你介绍这些概
念,期间也会涉及其他数据库中的相关概念和术语 。
本章将首先介绍如何下载和安装 PostgreSQL,然后会介绍一些必备的管
理工具和 PostgreSQL 术语 。本书写作之时,PostgreSQL 10 已发布,我
们将重点介绍该版本的一些新特性 。本章末尾会提供一些帮助资源,当
你需要额外的帮助或者报告 bug 时会用得到 。
1.1 为什么应该选择PostgreSQL
PostgreSQL是一款企业级关系型数据库管理系统,即使与 Oracle、
Microsoft SQL Server、IBM DB2 等业界最好的商用数据库相比也毫不
逊色 。PostgreSQL 之所以如此特别,是因为它不仅仅是一个数据库,还
是一个功能强大的应用开发平台 。
PostgreSQL 的速度很快 。大量的评测数据已经表明:与其商用以及开源
竞争对手相比,PostgreSQL 的速度要么远远胜出,要么旗鼓相当 。
PostgreSQL 支持用多种编程语言编写存储过程和函数 。除了系统自带的
C、SQL 和 PL/ pgSQL 编程语言外,还可以通过安装扩展包来支持
PL/Perl、PL/Python、PL/V8(又称为 PL/JAVAScript)、PL/Ruby 以及
PL/R 等 。这种支持多语言的能力可以让开发人员根据待解决问题的特
点来选择最合适的语言 。比如可以使用 R 语言来解决统计和图形领域的
问题,通过 Python 来调用 Web 服务,通过使用 SciPy 库来进行科学计
算,通过 PL/V8 来进行数据验证、字符串处理和 JSON 数据处理,等
等 。PostgreSQL 不但支持种类繁多的开发语言,使用过程也很简单:先
找到你需要的函数,看下它是用什么语言编写的,在 PostgreSQL 中安
装好支持该语言的扩展包,然后把代码复制过来就可以执行了 。真的不
能更简单 。
大多数数据库会限制用户只能使用预定义的数据类型,比如整型、字符
串、文本型、布尔型等 。PostgreSQL 在数据类型的支持方面有两个优
势:不但支持比绝大多数数据库更丰富的原生数据类型,而且还允许用
户按需自定义数据类型 。如果用户需要更复杂的数字类型,那么可以定
义包含两个浮点类型(float)的复合类型;如果需要定义一个三角形,
那么可以先定义一种“坐标”类型,然后再定义一种包含三个坐标的“三角形”
类型即可;
如果你对十二进制感兴趣,那么可以定义你自己的十二进制类型 。值得注
意的是,要想自定义类型完全发挥出其威力,需要有相应的运算符和函数
来识别并配合它 。因此,如果你自定义了一种特殊的数值类型,千万不要
忘了为它重定义配套的数学运算符 。是的,你没看错,PostgreSQL 允许用
户重定义基础运算符(+、-、/、*)的实现逻辑 。另外,用户自定义一种数
据类型后,PostgreSQL 会自动定义出一种基于该类型的数组类型 。因此,
如果你定义了一种复合数据类型,那么该复合数据类型的数组类型自动就有
了,你无须做额外的定义工作 。
PostgreSQL 会为每一张用户表自动创建一个数据类型定义 。比如我们创
建了一张名为 dogs 的表,包含 breed(品种)、cuteness(可爱程
度)、barkiness(爱叫的程度)等字段,那么 PostgreSQL 会自动在后台
创建一个同名的dogs数据类型 。这一特性将关系型数据库领域
的“表”概念与面向对象领域的“对象”概念紧密地联系到了一起,用户可
以像处理对象实例一样去处理记录 。比如你可以创建一个函数来每次处
理一个或者一批对象实例 。PostgreSQL 的很多第三方扩展包就利用该自
定义数据类型能力来优化性能,或者通过添加支持某个领域专用的特殊
SQL 语法来让业务代码更简洁和易于维护,或者实现一些在别的数据库
中完全不可能实现的功能 。
我们建议用户不要把数据库仅仅当成一个数据容器,像 PostgreSQL 这
样的数据库其实是一个成熟而完整的应用开发平台 。你会发现:强大的
数据库在手,其他一切都是过眼云烟 。一旦你成了 SQL 高手,别人用
其他工具需要几小时才能完成的工作,你在数据库里只需要几秒钟 。不


推荐阅读