Mysql不行了!!?PostgreSQL成主流!

早在 Stack Overflow  2024 年开发者调查报告中,PostgreSQL 已经取代了 MySQL 成为目前最流行的数据库,而且比例高出 MySQL 8%,差距不小。

图片

对于专业开发者,PostgreSQL 进一步拉开了和 MySQL 的差距,高出 12%!

图片

图片

值得一提的是,PostgreSQL 于 2018 年首次出现在开发人员调查中,当时有 33% 的开发人员表示使用它,而当年最受欢迎的选项是 MySQL,有 59% 的开发人员使用它。六年后,49% 的开发人员使用 PostgreSQL,连续第二年成为最受欢迎的数据库。目前,官方都自称 PostgreSQL 是世界上最先进的开源关系型数据库。

那么!!!

一、什么是 PostgreSQL?

PostgreSQL (通常简称为 “Postgres”) 是一个功能强大、开源的对象-关系型数据库管理系统 (ORDBMS)。它诞生于加州大学伯克利分校,拥有超过35年的活跃开发历史,以其无与伦-比的可靠性、功能健壮性和性能而闻名。

可以把它想象成一个高度可靠且功能极其丰富的“数据仓库”。你不仅可以存储传统的文本、数字等数据,还能处理复杂的查询和存储地理位置、JSON文档等高级数据类型。最重要的是,它是完全免费和开源的。


二、核心功能与特性 (为什么它如此受欢迎?)

PostgreSQL 的强大之处在于它几十年如一日对“正确性”和“功能性”的坚持。

开源与社区驱动 (Open Source & Community-Driven)

完全免费: 你可以免费用于任何目的,无论是个人项目、商业应用还是学术研究,没有昂贵的许可证费用。

活跃的社区: 一个全球化的、充满活力的社区在不断地贡献代码、修复错误、编写文档,确保数据库的持续进步和稳定。

ACID 事务与可靠性 (ACID Compliance & Reliability)

它严格遵守 ACID 原则(原子性、一致性、隔离性、持久性)。这意味着即使在断电、系统崩溃等极端情况下,你的数据也能保持安全和一致,这对于金融、交易等关键业务至关重要。

无与伦比的可扩展性 (Extensibility)

PostgreSQL 的设计哲学就是“可扩展”。你可以自定义数据类型、函数、操作符、索引方法等。

最著名的扩展是 PostGIS,它为 PostgreSQL 增加了强大的地理空间数据支持,使其成为地理信息系统 (GIS) 领域的首选数据库。

丰富的数据类型 (Rich Data Types)

JSON/JSONB: 高效地存储和查询 JSON 文档,性能堪比专门的 NoSQL 数据库。

Array: 可以在一个字段中存储数组。

HSTORE: 键值对存储。

XML: 支持 XML 数据。

UUID: 用于存储通用唯一标识符。

除了常见的 INTEGER, TEXT, VARCHAR, TIMESTAMP 等,它还内置了许多高级数据类型:

并发控制 (Concurrency Control)

它使用 多版本并发控制 (MVCC) 机制。简单来说,读取数据的操作不会阻塞写入数据的操作,反之亦然。这使得 PostgreSQL 在高并发读写场景下表现出色,能支持大量用户同时访问。

强大的 SQL 功能 (Advanced SQL Features)

它遵循 SQL 标准,并支持许多高级 SQL 功能,如窗口函数 (Window Functions)、公共表表达式 (CTEs)、递归查询等,让复杂的数据分析和报表生成变得更简单。

强大的安全特性 (Security)

提供基于角色的访问控制 (Role-Based Access Control)、行级安全策略 (Row-Level Security)、SSL 连接加密等多种安全机制,确保数据访问的安全可控。

附带安装及使用教程!!


三、安装教程(图文教程)

PostgreSQL安装教程:

官方链接:PostgreSQL: The world’s most advanced open source database

图片

编辑

图片

编辑

图片

编辑

图片

编辑

图片

编辑

图片

编辑

图片

编辑

默认端口:5432

图片

编辑

Next…

图片

编辑

waiting … 时间可能略久。。。

图片

编辑

这里可以不勾选!


四、初始化PostgreSQL

打开应用:

图片

编辑

第一次打开会提示设置密码。这个密码是pgAdmin的密码,以后连接服务器的密码需要保存,则会使用pgAdmin的密码对其加密和解密。

这里输入的密码,并不是安装过程中设置的PostgreSQL超级用户postgres的密码。

图片

编辑

ok,连接上了。

图片

六、基本 SQL 命令示例

我们来创建一个简单的“用户表”。

a. 创建数据库 虽然你已经连接到默认的 postgres 数据库,但通常最好为每个应用创建独立的数据库。

SQL

-- 在 psql 提示符中输入 CREATE DATABASE my_app_db; -- \q 退出 psql -- \l 查看所有数据库 -- \c my_app_db 连接到新数据库

b. 创建表 (CREATE TABLE) 连接到 my_app_db 后,我们创建一个 users 表。

SQL

CREATE TABLE users ( id SERIAL PRIMARY KEY, -- 自增主键 username VARCHAR(50) UNIQUE NOT NULL, -- 用户名,唯一且不能为空 email VARCHAR(100) UNIQUE NOT NULL, -- 邮箱,唯一且不能为空 created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认为当前时间 );
  • SERIAL PRIMARY KEY: 一个会自动增长的整数,用作唯一标识符。
  • VARCHAR(50): 最多包含50个字符的可变长度字符串。
  • UNIQUE NOT NULL: 该列的值必须是唯一的,且不能为空。
  • TIMESTAMP WITH TIME ZONE: 带时区的时间戳。

c. 插入数据 (INSERT) 向 users 表中添加一些记录。

SQL

INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com'), ('bob', 'bob@example.com');

d. 查询数据 (SELECT) 这是最常用的命令,用于从表中检索数据。

SQL

-- 查询所有用户的所有信息 SELECT * FROM users; -- 查询特定用户的信息 SELECT * FROM users WHERE username = 'alice'; -- 只查询用户名和邮箱 SELECT username, email FROM users;

e. 更新数据 (UPDATE) 修改已有记录。

SQL

UPDATE users SET email = 'alice_new@example.com' WHERE username = 'alice';

f. 删除数据 (DELETE) 删除记录。

SQL

DELETE FROM users WHERE username = 'bob';

总结:何时选择 PostgreSQL?

如果你的项目符合以下任何一点,PostgreSQL 都是一个绝佳的选择:

需要高度的数据完整性和可靠性 (例如:金融系统、科学研究数据)。

需要处理复杂的查询和数据分析

需要地理空间数据功能 (使用 PostGIS)。

应用未来可能会变得复杂,需要良好的扩展性

希望避免商业数据库的高昂成本,同时又不想牺牲功能和性能

从苹果、Instagram 到许多初创公司和大型企业,PostgreSQL 驱动着无数的应用。它是一个你学会之后,可以在未来几十年职业生涯中都持续受益的强大工具。

暂无介绍....

延伸阅读:

Mysql不行了!!?PostgreSQL成主流!

早在 Stack Overflow  2024 年开发者调查报告中,PostgreSQL 已经取代了 MySQ...

guozhiman
2025年7月16日
利用DNS 枚举获取子域名

每个域名都会通过DNS指向特定的IP地址。通过枚举DNS的方法,我们可以知道指向当前IP地址的域名有哪些。从而收集我们我...

guozhiman
2025年7月10日
告别复杂命令!nftables 才是 Linux 防火墙的未来

对于任何暴露在公网的 Linux 服务器而言,防火墙不是可选项,而是首要的安全防线。它就像一个数字哨兵,按照预设规则筛查...

guozhiman
2025年7月8日
BGP4已死?BGP4+才是下一代互联网的答案!

在广袤无垠的互联网疆域里,谁来决定数据应该往哪走?BGP4 和 BGP4+,正是这场全球网络交通调度的幕后英雄。而当 I...

guozhiman
2025年7月5日
DockerHub被封禁,怎么将镜像传到国内?一种简单合规的镜像同步到国内方案[最佳实践]

Docker将容器化技术普及,推动云计算向云原生的演进。Docker的核心创新技术之一是容器镜像,它是一种文件的打包方式...

guozhiman
2025年6月26日