2 minutes
PostgreSQL 简介与安装
什么是 PostgreSQL?
PostgreSQL 是一个功能强大的开源关系型数据库管理系统,拥有超过 35 年的活跃开发历史。它的名字源于 POSTGRES(加州大学伯克利分校的项目)和 Ingres(其前身),后更名为 PostgreSQL 以体现 SQL 支持。
为什么选择 PostgreSQL?
- 开源免费:PostgreSQL 采用类似 MIT 的开源许可,可以自由使用、修改和分发
- ACID 合规:完整支持事务的原子性、一致性、隔离性和持久性
- 扩展性强:支持 JSON/JSONB、全文搜索、地理空间(PostGIS)、键值存储等
- 活跃社区:全球范围内拥有数百万用户和数千贡献者
- 企业级特性:支持热备、流复制、分区表、并行查询等
PostgreSQL vs MySQL vs SQLite
| 特性 | PostgreSQL | MySQL | SQLite |
|---|---|---|---|
| 开源许可 | MIT/类BSD | GPL | Public Domain |
| ACID | 完整支持 | 取决于存储引擎 | 有限 |
| JSON 支持 | JSONB(二进制,可索引) | JSON 文本 | 无 |
| 并发控制 | MVCC | InnoDB MVCC | 串行化 |
| 扩展性 | 非常强 | 中等 | 有限 |
| 适用场景 | 企业级应用、数据分析 | Web 应用 | 移动/嵌入式 |
安装 PostgreSQL
Windows 安装
# 方案一:官方安装包
# 访问 https://www.postgresql.org/download/windows/
# 下载最新的 17.x 安装包并运行
# 方案二:使用 winget(Windows 10/11)
winget install PostgreSQL.PostgreSQL
# 方案三:使用 Chocolatey
choco install postgresql
安装完成后,默认会创建:
postgres超级用户postgres数据库(默认数据库)- 服务自动启动
macOS 安装
# 使用 Homebrew(推荐)
brew install postgresql@17
# 启动服务
brew services start postgresql@17
# 验证安装
psql --version
Linux 安装(Ubuntu/Debian)
# 添加 PostgreSQL 官方仓库
sudo apt update
sudo apt install -y postgresql postgresql-contrib
# 启动服务
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 验证安装
psql --version
Docker 安装(所有平台)
# 拉取并运行 PostgreSQL 容器
docker run --name pg-course \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=course \
-p 5432:5432 \
-d postgres:17
# 进入容器内的 psql
docker exec -it pg-course psql -U postgres -d course
连接 PostgreSQL
使用 psql(命令行客户端)
# 连接本地数据库
psql -U postgres -d course
# 连接远程数据库
psql -h localhost -p 5432 -U postgres -d course
# 在 Docker 中连接
docker exec -it pg-course psql -U postgres -d course
使用 DBeaver(GUI 客户端)
DBeaver 是一个免费的多平台数据库管理工具,支持 PostgreSQL:
- 下载安装 DBeaver
- 创建新连接 → PostgreSQL
- 输入主机、端口、数据库名、用户名和密码
基础配置
检查 PostgreSQL 版本
SELECT version();
输出示例:
PostgreSQL 17.0 on x86_64-pc-linux-gnu, compiled by gcc 11.4.0, 64-bit
查看当前数据库
-- 查看当前连接的数据库
SELECT current_database();
-- 列出所有数据库
\l
查看所有用户
-- psql 命令
\du
-- SQL 查询
SELECT usename, usesysid, usecreatedb, usesuper FROM pg_user;
配置文件位置
PostgreSQL 的主要配置文件:
postgresql.conf— 主配置(端口、内存、日志等)pg_hba.conf— 客户端认证配置(允许哪些 IP 连接、用什么认证方法)pg_ident.conf— 用户映射配置
# 查看配置文件路径
psql -U postgres -c "SHOW config_file;"
psql -U postgres -c "SHOW hba_file;"
常用 psql 命令
| 命令 | 说明 |
|---|---|
\l |
列出所有数据库 |
\c dbname |
连接到指定数据库 |
\dt |
列出当前数据库的所有表 |
\d tablename |
查看表结构 |
\di |
列出索引 |
\du |
列出用户 |
\x |
切换扩展显示(行转列) |
\! command |
执行系统命令 |
\q |
退出 psql |
\h COMMAND |
查看 SQL 命令的帮助 |
\timing |
开启查询计时 |
-- 示例:开启计时,方便性能测试
\timing on
-- 执行查询并查看耗时
SELECT count(*) FROM generate_series(1,1000000);
创建第一个数据库和表
-- 创建数据库
CREATE DATABASE my_demo;
-- 连接到新数据库
\c my_demo
-- 创建一张简单的表
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INTEGER CHECK (age > 0),
grade CHAR(1) DEFAULT 'C',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入数据
INSERT INTO students (name, age, grade) VALUES
('张三', 20, 'A'),
('李四', 22, 'B'),
('王五', 19, 'A');
-- 查询数据
SELECT * FROM students;
小结
本文我们了解了 PostgreSQL 的历史和优势,并在不同平台上完成了安装。通过 psql 工具的交互式使用,创建了第一个数据库和表,对 PostgreSQL 的基本操作有了初步认识。
下一步,我们将深入学习 PostgreSQL 的数据类型和建表语法,为后续的查询和分析打下坚实基础。
Summary: PostgreSQL 安装、psql 基础与第一个数据库。