PostgreSQL学习笔记(一):PostgreSQL介绍和安装

目录

概念

PostgreSQL简介

PostgreSQL的关键特性

[1. 标准兼容性](#1. 标准兼容性)

[2. 扩展性](#2. 扩展性)

[3. 数据完整性和可靠性](#3. 数据完整性和可靠性)

[4. 丰富的数据类型](#4. 丰富的数据类型)

[5. 查询能力](#5. 查询能力)

[6. 事务和并发控制](#6. 事务和并发控制)

[7. 扩展和插件](#7. 扩展和插件)

[8. 跨平台和多语言支持](#8. 跨平台和多语言支持)

[9. 高可用性和扩展性](#9. 高可用性和扩展性)

常用场景

安装

[Linux apt安装](#Linux apt安装)

下载安装包安装

客户端


概念

PostgreSQL简介

PostgreSQL(简称Postgres:PostgreSQL: Documentation)是一款功能强大的开源关系型数据库管理系统 (RDBMS),以其稳定性、可扩展性、合规性以及强大的功能支持而闻名。它被设计为支持复杂的应用程序和大规模的并发数据处理,同时还拥有对标准SQL的高支持度,并提供了许多高级功能。

PostgreSQL的关键特性

1. 标准兼容性
  • PostgreSQL 完全支持 SQL 标准(如 SQL:2011)的大部分功能。
  • 提供高级查询功能,如窗口函数、公共表表达式(CTE)、递归查询、部分索引和多种连接类型。
2. 扩展性
  • 用户定义类型:允许用户创建自己的数据类型。
  • 扩展机制 :可以动态加载插件(如 PostGIS,支持地理空间数据)。
  • 支持存储过程和函数,允许使用多种语言编写,如 PL/pgSQL、Python、Perl 和 JavaScript。
3. 数据完整性和可靠性
  • 强大的事务支持,完全遵循 ACID(原子性、一致性、隔离性和持久性)属性。
  • 支持多版本并发控制(MVCC),避免锁竞争,提高并发性能。
  • 提供完整的数据完整性约束,包括主键、外键、唯一性约束和检查约束。
4. 丰富的数据类型
  • 基本类型INTEGERNUMERICTEXTVARCHAR 等。
  • 高级类型JSON/JSONBARRAY(数组类型)、HSTORE(键值存储)。
  • 地理类型 :通过 PostGIS 扩展支持地理空间数据。
  • 复合类型:可以在表中存储结构化的复杂数据类型。
  • 范围类型:支持存储区间值(如日期范围、数字范围)。
5. 查询能力
  • 高级查询支持:
    • 窗口函数:对分组数据执行排名、移动平均等计算。
    • 递归查询:支持层次结构数据(如树形数据)的操作。
    • 全文检索:提供高效的全文索引和搜索功能。
  • 支持多种索引:B-Tree、GIN(Generalized Inverted Index)、GiST(Generalized Search Tree)、Hash 等。
6. 事务和并发控制
  • 支持 Savepoint(保存点)和嵌套事务。
  • 基于 MVCC 的并发控制,支持高性能并发访问。
  • 提供多种隔离级别(READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE)。
7. 扩展和插件
  • 支持动态加载模块,如 PostGISCitus(分布式数据库解决方案)、pglogical(逻辑复制插件)等。
  • 用户可以创建自定义函数、运算符、数据类型和索引方法。
8. 跨平台和多语言支持
  • 可运行于主流操作系统(Linux、Windows、macOS 和 UNIX 系统)。
  • 支持的客户端语言包括:Python(通过 Psycopg2)、Java(通过 JDBC)、Node.js、C/C++ 等。
9. 高可用性和扩展性
  • 流复制:支持主从复制(同步和异步复制)。
  • 逻辑复制:支持以行粒度进行数据复制,可用于表级别的数据同步。
  • 分区表:高效管理和查询大规模数据。
  • 分布式解决方案:通过扩展(如 Citus)实现分布式数据库功能。

常用场景

  • 传统关系型数据库

    适用于电子商务、ERP、CRM 等需要强大事务支持的场景。

  • 地理信息系统(GIS)

    结合 PostGIS 扩展,用于空间数据存储和分析。

  • 数据仓库

    使用分区表、并行查询和高级索引,适合 OLAP(联机分析处理)场景。

  • 时序数据存储

    与 TimescaleDB 结合,用于物联网、监控数据等。

  • JSON 数据存储

    支持 JSON 和 JSONB,适合存储半结构化数据。

安装

Linux apt安装

bash 复制代码
sudo apt update
sudo apt install postgresql postgresql-contrib

安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。

bash 复制代码
//切换postgres用户:
#  sudo -i -u postgres

//这时使用以下命令进入 postgres,输出以下信息,说明安装成功:
~$ psql
psql (9.5.17)
Type "help" for help.

postgres=# 

//输入以下命令退出 PostgreSQL 提示符:
\q

PostgreSQL服务管理:

bash 复制代码
sudo /etc/init.d/postgresql start   # 开启
sudo /etc/init.d/postgresql stop    # 关闭
sudo /etc/init.d/postgresql restart # 重启

下载安装包安装

下载地址:EDB: Open-Source, Enterprise Postgres Database Management

安装完之后可以通过\du查看系统中默认的用户:

客户端

PostgreSQL也提供了客户端工具方便连接服务器,相比于命令行可以更方便进行一些数据库操作,这里介绍一个常用的客户端工具pgAdmin****。

网关下载安装:pgAdmin - PostgreSQL Tools

添加server:

基于界面可以进行查询、更细和删除等操作,可mysql的客户端类似:

相关推荐
高铭杰1 小时前
Postgresql源码(139)vim直接修改postgresql表文件的简单实例
数据库·postgresql·vim
Jackilina_Stone1 小时前
【HUAWEI】HCIP-AI-MindSpore Developer V1.0 | 第一章 神经网络基础( 1 人工神经网络 ) | 学习笔记
人工智能·神经网络·学习·hcip·huawei
安冬的码畜日常1 小时前
【Vim Masterclass 笔记08】第 6 章:Vim 中的文本变换及替换操作 + S06L20:文本的插入、变更、替换,以及合并操作
笔记·vim
StevenGerrad1 小时前
【读书笔记/源码】How Tomcat Works 笔记- c11~c13
java·笔记·tomcat
一个欧维2 小时前
党员学习交流平台
学习·java-ee·毕业设计·springboot·课程设计
一弓虽2 小时前
java基础学习——java集合简单介绍及使用
java·学习
两笼包子一碗馄饨2 小时前
【软考网工笔记】操作系统管理与配置——Windows
windows·笔记
快乐星球居民13号2 小时前
【XJTUSE算法】考题回忆及复习建议
笔记·算法
LuH11243 小时前
【论文阅读笔记】LTX-Video: Realtime Video Latent Diffusion
论文阅读·笔记·生成对抗网络·aigc