Featured image of post PostgreSQL

PostgreSQL

安装

  1. PG数据库安装
  • Docker (最快方式):
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
  • Linux (Ubuntu/Debian):
sudo apt update
sudo apt install postgresql postgresql-contrib
  1. 相关工具的安装

navicat for PG lite


  1. 连接 (使用命令行 psql)

PostgreSQL 安装后会创建一个默认的超级用户,叫 postgres

  • 在 Linux/Mac 终端中登录:
# 切换到 postgres 用户并启动 psql 工具
sudo -u postgres psql
  • 登录成功后: 你会看到提示符变成 postgres=#,这表示你已经是超级管理员了。

基础操作实战 (CRUD)

以下命令请在 psql 命令行或图形化客户端的 SQL 编辑器中执行。**注意:SQL 语句末尾必须加分号 ;**

  1. 数据库操作
-- 创建一个新数据库
CREATE DATABASE my_app;

-- 切换/连接到这个数据库 (psql 专用指令,非 SQL)
\c my_app
-- 提示符会变为 my_app=#
  1. 创建表 (Create Table)

PostgreSQL 的数据类型非常丰富。

  • SERIAL: 相当于 MySQL 的 AUTO_INCREMENT(自增主键)。
  • TEXT: PG 中推荐使用 TEXT 代替 VARCHAR,性能几乎一样但没有长度限制。
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username TEXT NOT NULL,
    email TEXT UNIQUE NOT NULL,
    age INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. 插入数据 (Insert)
-- 插入单条数据
INSERT INTO users (username, email, age) 
VALUES ('zhang_san', 'zhang@example.com', 25);

-- 插入多条数据
INSERT INTO users (username, email, age) 
VALUES 
('li_si', 'li@example.com', 30),
('wang_wu', 'wang@example.com', 22);
  1. 查询数据 (Select)
-- 查询所有
SELECT * FROM users;

-- 条件查询
SELECT username, email FROM users WHERE age > 24;

-- 排序与限制
SELECT * FROM users ORDER BY age DESC LIMIT 1;
  1. 更新与删除 (Update & Delete)
-- 更新
UPDATE users SET age = 26 WHERE username = 'zhang_san';

-- 删除
DELETE FROM users WHERE age < 20;

进阶功能 (PG 的杀手锏)

这是大家选择 PG 而不是 MySQL 的主要原因:对 JSON 的原生支持。你可以把它当成 MongoDB 来用。

  1. 创建包含 JSON 的表

假设我们要存用户的“配置信息”,每个人的配置都不一样,且经常变动。

CREATE TABLE user_configs (
    user_id INT,
    config JSONB  -- JSONB 是二进制存储的 JSON,查询速度极快
);
  1. 插入 JSON 数据
INSERT INTO user_configs (user_id, config)
VALUES (1, '{"theme": "dark", "notifications": true, "tags": ["admin", "editor"]}');
  1. 查询 JSON 内部的字段

PG 提供了特殊的运算符 ->->>

-- 查询 theme 是 dark 的用户
SELECT * FROM user_configs WHERE config->>'theme' = 'dark';

-- 甚至可以查询 JSON 数组中是否包含某个值
SELECT * FROM user_configs WHERE config->'tags' ? 'admin';

第五步:常用的 psql 快捷指令 (作弊条)

如果你使用命令行工具 psql,这些指令必须背下来(注意这些指令前面是反斜杠 \,且不需要分号):

指令作用对应 MySQL
\l列出所有数据库SHOW DATABASES;
\c dbname切换到指定数据库USE dbname;
\dt列出当前库下的所有表SHOW TABLES;
\d tablename查看表结构详细信息DESC tablename;
\q退出 psqlEXIT;
\timing开启/关闭查询计时(无)

概念

知识点

PostgreSQL(常被简称为 Postgres 或 PG)是一个功能非常强大的开源数据库。对于刚接触它的人来说,最主要的门槛在于它的架构概念命令行工具与 MySQL 略有不同。

这是一个从 0 到 1 的详细上手教程。

在使用之前,需要理解 PG 的层级结构,这比 MySQL 多了一层:

  • MySQL: 实例 (Instance) -> 数据库 (Database/Schema) -> 表 (Table)
  • PostgreSQL: 实例 (Instance) -> 数据库 (Database) -> 模式 (Schema) -> 表 (Table)
  • 注:默认情况下,一切都会放在名为 public 的模式下,所以初学者可以暂时忽略“模式”这一层,当作它不存在。

推荐的图形化客户端 (GUI)

如果你不想天天敲命令行,推荐下载以下软件来管理 Postgres:

  1. pgAdmin 4: 官方提供的工具,功能最全,web 风格,但有时候稍微有点慢。
  2. DBeaver (强烈推荐): 免费开源,支持 PG、MySQL 等所有数据库,界面类似 Eclipse,功能非常强大。
  3. Navicat for PostgreSQL: 收费软件,好用但贵。
最后修改于 Dec 30, 2025 15:56 +0500
使用 Hugo 构建
主题 StackJimmy 设计