PostgreSQL 很多人称为「世界上最先进的、功能最强大的开源数据库」,它可以和 Oracle 相媲美,而且没有那么昂贵的价格和傲慢的客服。
PostgreSQL 是完全由社区驱动的开源项目。它提供了单个完整功能的版本,而不像 MySQL 那样提供了多个不同的社区版、商业版与企业版。随着 PostgreSQL 这几年的迅猛发展,在国内也掀起了一波 PostgreSQL 的热潮。
今天我们就从「安装、设置、创建」等最基础的操作开始,带大家入门 PostgreSQL。
以下课程内容出自实验楼课程 ——《PostgreSQL 基础入门实战》:
大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实、深入浅出、示例充足、覆盖重点。
PostgreSQL 简介
在 Ubuntu 系统中安装 PostgreSQL 数据库
PostgreSQL 是一个功能强大的开源关系型数据库管理系统,用于安全地存储数据。PostgreSQL 在某些地方被简称为 PG 。
所谓 “功能强大”,就是优点很多:
支持超多种类的数据类型,数量在开源数据库里是第 1 名
可以在 Windows 、FreeBSD 、Linux 、macOS 等主流操作系统中运行
支持 SQL 子查询、触发器、视图、事务多级隔离、多进程并发控制
支持包括 C、C++、Java、Perl、Python、Ruby 在内的多种语言的编程接口
所谓 “开源”,就是指 PostgreSQL 所有版本的源代码均为公开状态,供任何个人和组织免费使用和修改。PostgreSQL 由全球志愿者团队开发,不受任何公司或其他私人实体控制。
所谓 “关系型”,就是提供各种约束。
所谓 “安全的存储”,这涉及到两层意思:一是数据持久化,这是大多数据库的基本功能;二是热备,PostgreSQL 采用物理复制,在保证主备数据一致上具有较高的可靠性。
关于 MySQL 与 PostgreSQL 有两句标语:
MySQL:世界上最受欢迎的数据库
PostgreSQL:世界上最先进的数据库
当我们评判一些编程语言孰优孰劣时,当我们争辩一些框架性能高低时,一个很好的论据就是热度排名。
编程语言的数量几百上千,如果一门编程语言五年进不了 TIOBE 的前二十,谁还好意思吹嘘呢?当然啦,所有的这些评判和争辩的实际意义几乎没有,我们只是说着玩儿。
尽管如此,我们还是可以用热度排名佐证一门语言或一个框架的优秀与否。热度通常与用户量呈正相关性。
对于数据库的热度排名,就像 TIOBE 一样,也有一个叫做 DB Engines 的网站。
截止 2020 年 6 月底,排名前十的数据库热度表格如下:
如上表所示,前五基本是稳定的,热度在 400+ ,后面的几个热度差距很小。PostgreSQL 排名第四,且与前三名的差距极大,冲击前三的可能性微乎其微。所以它无法拥有 MySQL 的 Popular 标签。
排名第 5 的 MongoDB 是热度最高的非关系型数据库。如果告诉你 PostgreSQL 在 9.2 版本中加入了 JSON 数据类型以支持 NoSQL 数据存储功能,且在性能上甚至优于 MongoDB ,是不是觉得 PostgreSQL 也有点儿能打了呢?
此外还可以在网站中查看数据库的趋势图,可以看到近些年具有明显增长趋势的也就是 PostgreSQL 和 MongoDB 了:
实验环境中使用的是 Ubuntu 操作系统,我们可以在终端执行 sudo apt 命令来安装软件。
首先执行如下命令刷新源:
$ sudo apt update
操作截图如下:
然后安装 PostgreSQL 数据库及其客户端插件:
$ sudo apt install -y postgresql postgresql-client
操作截图如下:
查询 PostgreSQL 数据库的状态:
$ sudo service postgresql status
如果打印信息结尾是 down ,表示服务未启动;如果打印信息结尾是 online ,表示服务器已启动。
执行如下命令启动服务:
$ sudo service postgresql start
操作截图如下:
至此,PostgreSQL 服务器和客户端就全部安装完成并启动了服务。
执行如下命令查看 PostgreSQL 的版本:
$ psql --version
我们安装的数据库版本是 9.5 ,这是目前使用量最大的版本,但不是最新的版本,目前最新版是 12.3 。不必担心版本不够新导致功能不强的问题,最新的功能都不是企业级应用的功能,甚至有可能还处于测试阶段。
PostgreSQL 的客户端需要执行 psql 命令来启动,这与 MySQL 的客户端类似,是一个命令行交互工具。
在安装 PostgreSQL 时,操作系统会创建一个名为 postgres 的用户。终端执行如下命令查看最近创建的十个用户:
$ sudo tail /etc/shadow
操作截图如下,可以看到最下面的用户就是 postgres ,我们要使用这个用户进入客户端,因为目前只有该用户有权限:
打开实验环境后,默认使用的用户是 shiyanlou ,我们首先切换到 postgres 用户:
$ sudo su postgres
使用 whoami
命令查看当前登录的用户:
切换到 postgres 用户后,在终端执行 psql-l
命令查看已有数据库:
其中 postgres 数据库是为用户 postgres 创建的同名数据库,它是一个自动创建的数据库。template0 和 template1 是两个模板数据库。当用户创建新的数据库时,会克隆模板数据库。
执行最简单的 psql
命令即可进入客户端,也就是命令行交互工具。执行 \c
命令查看当前用户和所选择的数据库。
PostgreSQL 的客户端与 MySQL 的不同,要先选择数据库,而不能进入之后再选。
可以看到默认选择的就是 postgres 数据库。
退出客户端要执行 \q
命令。
在 PostgreSQL 的客户端中有很多快捷命令,它们都是以反斜杠开头的。
例如查看全部数据库信息,可以使用 \l
命令:
如果使用 SQL 语句的话,就要这样:
SELECT
datname AS 数据库,
pg_encoding_to_char(encoding) AS 编码格式,
rolname AS 拥有者
FROM pg_database
JOIN pg_authid
ON pg_database.datdba = pg_authid.oid;
操作截图如下:
可以看到,数据库有 “拥有者” 的概念,这在 MySQL 中是没有的。实际上,在 PostgreSQL 中一切都有所属用户,数据库、数据表、视图、函数、触发器都有所属用户。
本节实验内容较为简单,主要介绍了 PostgreSQL 的特点和基本功能以及在 Ubuntu 操作系统中如何安装。
在接下来的实验中,我们主要是在客户端命令行上操作。
后续还有 9 节课程,将细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实、深入浅出、示例充足、覆盖重点。如果你想学习完整的内容,欢迎到实验楼边敲代码边学习~
课程地址:https://www.lanqiao.cn/courses/1612
???????????? 点击阅读原文,学习完整课程内容!