CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PostgreSQL 实战/课时/PostgreSQL 是什么
RawBlame
课时目录12 节

PostgreSQL 实战

  1. 01PostgreSQL 是什么
  2. 02安装与 psql
  3. 03DDL 与约束
  4. 04数据类型
  5. 05JSONB
  6. 06索引与 EXPLAIN
  7. 07事务与 MVCC
  8. 08Spring Boot 接入
  9. 09迁移与 Flyway
  10. 10选型:PG vs MySQL
  11. 11Docker 运行 PG
  12. 12综合练习

PostgreSQL 是什么

与 MySQL 对比、适用场景、本站仍用 MySQL 的说明。

25 分钟

PostgreSQL 是什么

这一课你将能做到

  1. 用自己的话说明 PostgreSQL(常简称 PG)是什么,以及它和「通用 SQL」的关系
  2. 对照本站仍用 MySQL 8.0 的原因,说出学本 track 的真实用途(面试、云栈、JSONB 等)
  3. 在脑中画出「本站业务库 vs 本机实验 PG」两条线,知道它们互不替代

为什么要学

全栈路线图、云厂商文档、Supabase / Neon 一类产品,常默认或强烈推荐 PostgreSQL。你若只摸过 MySQL,遇到 JSONB、RETURNING、GENERATED … AS IDENTITY、逻辑复制时会突然卡住。

CodeRoadMap 生产库仍是 MySQL(jdbc:mysql://…/codeforge,表见 backend/src/main/resources/schema.sql)。本 track 不是要你立刻换库,而是用同一套「表 + SQL」思维,补上 PG 专精视角,方便对接路线图里的 PostgreSQL 节点。

人话:MySQL 是本站「正在跑的真相」;PG 是「你该会的另一种主流关系型引擎」。

先建立图像

学员浏览器
    ↓ HTTP /api
Spring Boot(本站)
    ↓ JDBC
MySQL 8  ←—— 生产 / 跟练 sql-essentials 的权威源
              (cf_track、cf_lesson …)

你本机(本 track)
    ↓ Docker / psql
PostgreSQL 16  ←—— 实验库 codeforge_pg
                   练同一套模型的 PG 方言
维度PostgreSQLMySQL 8(本站)
引擎模型单一内核,功能集中InnoDB 为主
半结构化JSONB + GIN 索引JSON 类型,索引能力较弱
扩展PostGIS、pgcrypto 等成熟插件/生态更偏传统 OLTP
复制物理复制 + 逻辑复制主从、Group Replication
国内运维增长快文档与 DBA 经验更多

把两者想成「同一门语言的两种方言」:SELECT 大多相通;建表类型、布尔、自增、JSON 查询会分叉。

跟着做

步骤 1:确认你已具备 SQL 入门

打开 SQL 基础 的 sql-intro。用自己的话写下:表、主键、外键各是什么。
本课不要求本机已装 PG;先建立「为什么要学」的坐标系。

步骤 2:对照本站表结构

打开仓库 backend/src/main/resources/schema.sql,找到 cf_track / cf_lesson。记下:

  • 课程路径靠 slug 对外暴露
  • 课时靠 track_id 归属课程
  • 时间字段、布尔/整型习惯是 MySQL 方言

下一课起,你会在 PG 里用相近概念、不同写法重建练习表。

步骤 3:列出三个「值得上 PG」的场景

在笔记里写三条,例如:

  1. 产品要把「标签 + 扩展配置」放进一列,还要按包含关系查(JSONB + )
@>
  • 需要地理数据(PostGIS)或强标准 SQL / CTE / 窗口函数重度分析
  • 团队已选 Neon、Supabase、RDS PostgreSQL,本地必须对齐方言
  • 若三条都写不出,说明你目前场景更适合继续深挖 MySQL——也没关系,本 track 仍练通用能力。

    步骤 4:分清「学」与「迁」

    在纸上画两框:

    [学 PG]  Docker 起实例 → psql → 练习 schema → 可选 Spring profile
    [迁生产] 需要:迁移脚本、备份、双写/切换窗口、回滚预案(本 track 不要求)
    

    本站 不会 因你学完本课就改 application.yml 指向 PG。实验与生产隔离,是安全跟练的底线。

    步骤 5:在路线图里定位节点

    打开 全栈路线图 与 SQL 路线图,找到 PostgreSQL 相关节点。用一句话写给自己:「这门课对应路线图哪一格,学完算勾掉什么。」

    步骤 6:预习下一课环境

    确认本机有 Docker(或计划用云托管 PG)。下一课用官方镜像 postgres:16 起库并用 psql 连上。MySQL 仍占 3306,PG 常用 5432,可并存。

    讲清楚要点

    1. PostgreSQL 是开源对象-关系型数据库:以标准 SQL 兼容、丰富类型与 MVCC 事务著称;官方文档在 postgresql.org/docs。
    2. 与 MySQL 是「同族方言」不是「互为子集」:会 MySQL 能加速入门,但不能把 AUTO_INCREMENT、TINYINT(1)、反引号习惯原样粘贴进 PG。
    3. 本站权威数据源仍是 MySQL 8:教程主线、schema.sql、Flyway 迁移都以 MySQL 为准;PG track 是能力扩展。
    4. JSONB / 数组 / UUID / timestamptz 是日常开发里最常感到「PG 不一样」的地方,后面几课会逐个练。
    5. 因为 Web API 读多写少、需要强约束与事务,所以 关系型仍是业务真相层;选 PG 还是 MySQL,看场景与团队,不看口号。
    6. 本地双库很常见:3306 跑业务跟练,5432 跑实验;命名练习库 codeforge_pg,避免和生产库名混淆。

    你可能会懵的地方

    • 「对象-关系」是不是 NoSQL?
      不是。PG 仍是表、行、事务;「对象」指自定义类型、数组、复合类型等扩展,主干仍是关系模型。

    • SQL 基础 track 白学了吗?
      没有。过滤、JOIN、聚合、事务概念直接迁移;本 track 补方言与特色能力。

    • 为什么官方镜像叫 postgres 而产品名是 PostgreSQL?
      历史命名:项目常简称 Postgres;镜像名 postgres,文档写 PostgreSQL。同一产品。

    • 一定要先卸载 MySQL 吗?
      不要。端口不同即可并存;本站跟练仍依赖 MySQL。

    • 什么时候算「会 PG」?
      入门标准:能建 schema、写带约束的 DDL、查 JSONB、读 EXPLAIN、用事务,并能用 Spring 连上练习库。不是背完所有扩展名。

    错法对照

    错法问题正解
    把本站 application.yml 直接改成 PG URL迁移脚本与类型不兼容,启动失败或数据错乱用独立 profile / 独立练习库
    以为「会 SQL」=「会所有方言」类型与 DDL 报错一堆按本 track 课序对照官方文档
    用轻慢称谓或空洞「速成」当学习目标不符合本站讲义称谓标准用「入门 / 常见卡点」中性说法
    只看对比表不练 psql停留在印象下一课必须跑通 SELECT 1
    把 PG 当 MySQL 的「升级版」选型讨论失真看成不同产品,按场景选

    自测三问

    1. CodeRoadMap 生产为何仍用 MySQL?举出至少两个工程原因。
    2. JSONB 相对 MySQL JSON,对「按标签筛选课程」意味着什么?
    3. 本机同时跑 MySQL 与 PG 时,默认端口各是多少?练习库建议叫什么?

    小结一句话

    PostgreSQL 是功能全面的开源 RDBMS;本站业务仍以 MySQL 为真相,本 track 用实验库建立 PG 专精视角。

    官方延伸

    • PostgreSQL 官方文档(当前稳定版)
    • 下一课:安装与 psql——用 Docker 拉起实例并连上
    加载本节练习…
    下一课 →安装与 psql