一、PostgreSQL数据库介绍
1、什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
ORDBMS(对象关系数据库系统)是面向对象技术与传统的关系数据库相结合的产物,查询处理是 ORDBMS 的重要组成部分,它的性能优劣将直接影响到DBMS 的性能。
ORDBMS在原来关系数据库的基础上,增加了一些新的特性。
RDBMS 是关系数据库管理系统,是建立实体之间的联系,最后得到的是关系表。
OODBMS 面向对象数据库管理系统,将所有实体都看成对象,并将这些对象类进行封装,对象之间的通信通过消息 OODBMS 对象关系数据库在实质上还是关系数据库 。
PostgreSQL是一个功能强大的开源关系型数据库管理系统(RDBMS),它具有良好的可扩展性、稳定性和安全性。
2、ORDBMS 术语
在我们开始学习 PostgreSQL 数据库前,让我们先了解下 ORDBMS 的一些术语:
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- **外键:**外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- **索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
3、PostgreSQL 特征
-
函数:通过函数,可以在数据库服务器端执行指令程序。
-
索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。
-
触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。
-
**多版本并发控制:**PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。
-
规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。
-
数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据
等。
-
全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。
-
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。
-
数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。
4、PostgreSQL 特点
- 开源性:PostgreSQL是开源软件,可以免费获取和使用。
- 关系型数据库:支持关系型数据模型,使用SQL语言进行数据操作。
- 可扩展性:支持丰富的扩展功能和插件,可以满足各种复杂的数据处理需求。
- 事务支持:具有强大的事务处理能力,支持ACID(原子性、一致性、隔离性、持久性)属性,确保数据的完整性和一致性。
- 多版本并发控制(MVCC):支持多个事务同时对同一数据进行读写操作,提高并发访问性能。
- 复杂查询:支持复杂的查询操作,包括联合查询、子查询、聚合函数等。
- 完整的数据类型支持:支持丰富的数据类型,包括基本数据类型、数组、JSON等。
- 安全性:提供丰富的安全特性,包括访问控制、SSL支持、数据加密等。
- 可定制性:提供丰富的可定制选项和配置参数,可以根据具体需求进行灵活配置。
二、PosetgreSQL与其他数据比较
PostgreSQL、MySQL和Oracle是三种常见的关系型数据库管理系统(RDBMS),它们在一些方面有着相似之处,但在很多方面也存在着显著的差异。以下是它们之间的比较:
1、开源性和许可证
- PostgreSQL是一种开源数据库,采用的是PostgreSQL许可证,允许用户自由使用、修改和分发。
- MySQL也是开源的,采用的是GNU通用公共许可证(GPL),但也有商业许可证版本由Oracle提供。
- Oracle是一种闭源的商业数据库,需要购买许可证才能使用。
2、数据完整性和约束
- PostgreSQL在这方面非常严格,支持多种约束、外键、触发器和存储过程,可以确保数据的完整性和一致性。
- MySQL在默认情况下对数据完整性的支持较弱,但可以通过设置来实现一定程度的约束。
- Oracle提供了强大的数据完整性支持,包括复杂的约束和触发器。
3、功能和扩展性
- PostgreSQL在功能和扩展性方面非常强大,支持复杂的数据类型(如数组、JSON、XML)、全文搜索、地理空间数据和自定义扩展。PostgreSQL还支持主从复制、流复制、逻辑复制等方式实现数据备份和高可用性。可以通过内置的或第三方的工具实现集群部署和自动故障转移。
- MySQL在功能方面较为简化,但在处理简单的事务时性能较好。它支持存储过程、触发器和视图,但功能相对较少。
- Oracle在功能和扩展性方面也非常强大,支持复杂的企业级应用需求,包括高级分析、数据挖掘和大规模数据处理。
4、性能和扩展性
- 在大型企业级应用中,Oracle通常提供了出色的性能和扩展性,但也伴随着高昂的成本。
- PostgreSQL在处理复杂查询和高并发时表现优异,对于读写均衡的应用具有良好的性能。
- MySQL在处理简单查询和读密集型应用时表现良好,但在复杂查询和高并发情况下性能可能有所下降。
5、存储引擎和事务管理
- PostgreSQL使用MVCC(多版本并发控制)来实现事务隔离,支持多种存储引擎。
- MySQL拥有多种存储引擎,如InnoDB、MyISAM等,可以根据需求选择合适的引擎。
- Oracle拥有自己的存储引擎和事务管理机制,提供了高度可靠的事务处理和数据保护。
6、适用场景
- PostgreSQL适用于需要高度可定制性和复杂查询的应用,如大型企业应用和数据仓库。
- MySQL适用于需要快速读取和简单事务处理的应用,如Web应用和小型企业应用。
- Oracle适用于大型企业级应用,如金融系统和电信系统等对性能和可用性要求较高的应用。
三、PosetgreSQL下载与安装
1、下载与安装
-
官网
- https://www.postgresql.org/
-
下载地址
- Windows 上安装 PostgreSQ,在这里我们使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商。
- https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
-
一路下一步(中间有个设置密码的要记住咯),但是记得最后一步有个选项不要勾选,如下图
2、连接服务器
(1)pgAdmin4连接
下载完会发现多了很多东西,首先我们先打开pgAdmin4。
打开看到有个Server下面会有个PostgreSQL 16,双击,会弹出验证密码的输入框,输入之前安装设置的密码即可,连接成功就是下面的界面。
(2)SQL Shell连接
现在打开上面的SQL Shell,按照下面输入即可,口令就是你安装设置的密码。
(3)Navicat连接
上面两种都是PostgreSQL自带的,通过Navicat连接的话,最好是17版本及以上(因为我之前16版本连接失败了),首先在连接里面选择PostgreSQL。
输入连接名称,用户名默认就是postgres,密码就是安装时候设置的,然后就是测试连接,出现连接成功就可以直接连接了。
连接成功
其实还有一种cmd连接的,但是太麻烦了,懒得弄了