Skip to content

概述

什么是 PostgreSQL?

PostgreSQL 是一个功能强大的开源对象关系型数据库管理系统(ORDBMS),以其可靠性、功能丰富和性能卓越而闻名。它支持 SQL 标准并提供了许多高级功能。

PostgreSQL 的特点

1. 开源免费

  • PostgreSQL 许可证,类似 BSD/MIT
  • 完全免费使用和修改
  • 活跃的社区支持

2. 标准兼容

  • 高度兼容 SQL 标准
  • 支持复杂查询
  • 支持窗口函数、CTE 等

3. 扩展性强

  • 支持自定义数据类型
  • 支持自定义函数
  • 丰富的扩展生态

4. 高级功能

  • 完整的 ACID 事务
  • MVCC 并发控制
  • 表继承
  • JSON 支持

核心概念

数据库(Database)

sql
CREATE DATABASE mydb;
\l
\c mydb
DROP DATABASE mydb;

模式(Schema)

sql
CREATE SCHEMA app;
DROP SCHEMA app;

表(Table)

sql
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

视图(View)

sql
CREATE VIEW active_users AS
SELECT * FROM users WHERE status = 'active';

数据类型

数值类型

类型说明
SMALLINT2字节整数
INTEGER4字节整数
BIGINT8字节整数
DECIMAL精确小数
NUMERIC精确小数
REAL4字节浮点数
DOUBLE PRECISION8字节浮点数
SERIAL自增整数

字符类型

类型说明
CHAR(n)定长字符串
VARCHAR(n)变长字符串
TEXT无限长度文本

日期时间类型

类型说明
DATE日期
TIME时间
TIMESTAMP日期时间
TIMESTAMPTZ带时区的时间戳
INTERVAL时间间隔

布尔类型

sql
BOOLEAN -- true/false/null

JSON 类型

类型说明
JSONJSON 文本
JSONB二进制 JSON,更高效

数组类型

sql
INTEGER[]
VARCHAR[][]

其他类型

类型说明
UUID通用唯一标识符
BYTEA二进制数据
XMLXML 数据
MONEY货币类型
CIDR/INET网络地址
GEOMETRY几何类型(PostGIS)

安装 PostgreSQL

Windows 安装

  1. 下载 PostgreSQL 安装包
  2. 运行安装程序
  3. 设置超级用户密码
  4. 选择端口(默认 5432)

Linux 安装 (Ubuntu)

bash
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql

macOS 安装

bash
brew install postgresql
brew services start postgresql

连接 PostgreSQL

命令行连接

bash
psql -U postgres
psql -h localhost -U postgres -d mydb

常用参数

  • -h: 主机地址
  • -p: 端口号
  • -U: 用户名
  • -d: 数据库名
  • -W: 强制输入密码

psql 常用命令

数据库操作

sql
\l              -- 列出数据库
\c mydb         -- 连接数据库
\conninfo       -- 显示连接信息

表操作

sql
\dt             -- 列出表
\d users        -- 查看表结构
\d+ users       -- 详细表结构

其他命令

sql
\du             -- 列出用户
\dn             -- 列出模式
\df             -- 列出函数
\di             -- 列出索引
\x              -- 切换扩展显示
\q              -- 退出
\?              -- 帮助
\h SELECT       -- SQL 命令帮助

基本操作

创建数据库

sql
CREATE DATABASE mydb;
CREATE DATABASE mydb WITH ENCODING 'UTF8';

创建表

sql
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    age INTEGER CHECK (age >= 0),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

插入数据

sql
INSERT INTO users (name, email, age) VALUES ('张三', 'zhangsan@example.com', 25);

查询数据

sql
SELECT * FROM users;
SELECT name, email FROM users WHERE age > 20;

更新数据

sql
UPDATE users SET age = 26 WHERE name = '张三';

删除数据

sql
DELETE FROM users WHERE id = 1;

下一步学习

现在你已经了解了 PostgreSQL 的基础知识,可以继续学习: