什么是 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:

  1. 下载安装 DBeaver
  2. 创建新连接 → PostgreSQL
  3. 输入主机、端口、数据库名、用户名和密码

基础配置

检查 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 基础与第一个数据库。