关系型数据库教程 - MySQL与PostgreSQL完整指南

现在做Web开发、分析用户行为、甚至AI训练前的大规模数据预处理,关系型数据库(RDBMS) 都是绕不开的核心工具栈。而开源生态里的双雄——MySQL 8.0+PostgreSQL 14+,更是从个人小项目到互联网大厂应用的绝对主流选择。

道满PythonAI的这套完整教程,避开了枯燥的纯理论堆砌,用「基础+进阶+Python实战落地」的三层结构,帮你快速掌握从建表到优化、从原生SQL到Python ORM的全链路能力。


课程概览

🎯 你将获得什么?

通过这套教程,你可以:

  • 搞懂关系型数据库的核心底层逻辑(不用死记硬背术语)
  • 写出规范、高效、防注入的各类SQL语句
  • 精准判断MySQL/PostgreSQL的项目适配场景
  • 设计出符合三范式但又能灵活扩展的表结构
  • 用Python实现高可用、高性能的数据库应用
  • 应对面试中常见的「索引优化」「锁机制」「事务处理」问题

👥 谁适合学?

  • 数据库纯小白:想从零搭一个能跑的小系统数据库
  • Web/全栈开发工程师:补全数据库「只会写简单CRUD」的短板
  • Python数据分析师:提升大规模数据的查询速度与处理效率
  • 系统架构入门者:为后续学习分布式/NoSQL打基础

📚 课程大纲(三层式递进)

🟢 第一部分:基础入门篇(从0到能写简单项目)

这一部分会先帮你建立对RDBMS的直观认知,再把SQL语言五件套(DDL/DML/DQL/DCL/TCL核心逻辑) 拆解得明明白白,配合可直接复制的小例子练手。

  1. 关系型数据库和MySQL与PostgreSQL概述
    ✅ 什么是ACID?为什么关系型库更靠谱?
    ✅ 双雄对比:什么时候用MySQL,什么时候选PostgreSQL?
    ✅ 本地快速安装配置(附Windows/Mac/Linux一键脚本思路)

  2. SQL的增删改查-DDL数据定义
    ✅ 创建/删除/修改数据库、表、约束(主键/外键/唯一/非空/默认)
    ✅ 索引的基础创建与删除(先会用,原理留到进阶)
    ✅ 双雄DDL的小语法差异(比如自增主键的写法)

  3. SQL的增删改查-DML数据操作
    ✅ 安全的批量插入、更新、删除操作
    ✅ 避免常见的DML错误(比如没有WHERE条件全表删除)

  4. SQL的增删改查-DQL数据查询
    ✅ 单表查询的进阶筛选(LIKE/IN/BETWEEN/ORDER BY/LIMIT分页)
    ✅ 多表关联(内连接/左连接/右连接的区别与场景)
    ✅ 子查询、聚合函数、分组与过滤(HAVING)

  5. SQL的增删改查-DCL数据控制
    ✅ 创建/删除用户、授予/回收权限
    ✅ 基础的事务控制(TCL逻辑也会在这里融合讲解)


🔵 第二部分:进阶提升篇(写出能上线的代码)

如果你已经写过简单的学生管理/博客系统表结构,但遇到「查询慢」「业务复杂不会抽象」「锁冲突不知道怎么查」的问题,这部分是重点。

  1. MySQL与PostgreSQL新特性对比
    ✅ MySQL 8.0的CTE、窗口函数、JSON字段增强
    ✅ PostgreSQL 14+的存储过程简化、JSONB索引优化、分区表改进
    ✅ 如何根据新特性做技术选型决策

  2. 视图、函数和过程
    ✅ 什么时候用视图替代复杂查询?
    ✅ 存储函数/存储过程的编写与安全边界(什么时候该用,什么时候该避免)

  3. 索引优化策略
    ✅ B+树索引的核心工作原理(大白话,无公式)
    ✅ 联合索引的最左前缀原则、覆盖索引、索引失效的常见场景
    ✅ MySQL的EXPLAIN和PostgreSQL的EXPLAIN ANALYZE使用方法


🟡 第三部分:Python实战篇(把知识落地成项目)

这一部分我们会用Python连接双雄数据库,从原生驱动到成熟的ORM框架,教你如何写出企业级可维护、可扩展的代码。

  1. Python接入MySQL与PostgreSQL数据库
    ✅ 原生驱动的连接(PyMySQL/psycopg2)
    ✅ 连接池的使用(避免频繁创建销毁连接)
    ✅ SQLAlchemy ORM的基础与进阶(多表关联映射、事务管理)
    ✅ 参数化查询的重要性(彻底杜绝SQL注入)

🛤️ 个性化学习路径

纯小白路径

  1. 概述篇建立认知 → 本地安装测试
  2. DDL建表练手(比如先建个简单的「用户+文章」表)
  3. DML/DQL交替练习(先往表里插点假数据,再查出来玩)
  4. 学完DQL的联合查询后,做个微型博客的SQL原型
  5. 最后快速过DCL/进阶的索引基础,再学Python实战

有基础开发者路径

  1. 跳过基础入门篇的前4节,直接看索引优化策略双雄新特性对比
  2. 学视图、函数、过程补全业务抽象能力
  3. 重点攻克Python的SQLAlchemy ORM进阶和连接池使用

💡 配套实践项目(学完每部分都有得做)

基础篇项目:班级考勤管理SQL原型

要求:实现班级、学生、考勤记录的三表关联,支持按日期/学生/班级查询考勤,支持批量插入假数据。

进阶篇项目:电商订单表优化

给定一套原始、查询慢的订单相关表,要求:

  1. 分析索引缺失或失效的地方
  2. 用视图或窗口函数优化复杂查询
  3. 考虑分库分表的前期准备(或者用PostgreSQL的分区表)

Python实战篇项目:简易博客后端数据层

要求:用FastAPI+SQLAlchemy ORM实现用户、文章、评论的CRUD接口,使用连接池,支持事务处理。


🛠️ 本教程涉及的技术栈

  • 数据库系统: MySQL 8.0+, PostgreSQL 14+(稳定主流版本)
  • 编程语言: Python 3.8+
  • 数据库驱动: PyMySQL, psycopg2-binary
  • ORM框架: SQLAlchemy 2.0+(最新异步+同步兼容版本)
  • 可视化工具: MySQL Workbench, pgAdmin 4, VS Code(带数据库插件)

📖 学习技巧(踩坑总结)

  1. 边学边敲:SQL和Python代码一定要自己敲一遍,不能只看(很多语法差异敲的时候才会发现)
  2. 先写正确的,再优化:不要一开始就纠结性能,先把需求用最简单的SQL实现,再用EXPLAIN/EXPLAIN ANALYZE分析优化
  3. 注意事务边界:尤其是涉及多表操作的业务,一定要加事务
  4. 学会查官方文档:遇到版本问题或特殊语法,官方文档是最靠谱的

❓ 常见问题速答

Q:MySQL和PostgreSQL选哪个入门?

A:纯小白建议选MySQL——语法相对宽松,网上的入门教程和问题解答更多;如果对JSON处理、地理空间数据、复杂查询有需求,或者想更贴近SQL标准,直接选PostgreSQL也没问题。

Q:Python数据库编程用原生驱动还是ORM?

A:小项目/简单查询用原生驱动足够;中大型项目、团队协作推荐用SQLAlchemy ORM 2.0+——可以避免手写大量重复SQL,代码可维护性更高,还能支持异步操作。

Q:索引是不是建得越多越好?

A:绝对不是!索引会占用存储空间,还会降低INSERT/UPDATE/DELETE的速度——因为修改数据的时候,索引也要同步更新。只给经常出现在WHERE、ORDER BY、JOIN ON里的字段建索引。


建议你按照课程大纲的顺序逐步学习,每完成一个章节后,用配套的实践项目练手巩固。遇到问题可以先查官方文档,再看Stack Overflow,或者在评论区留言讨论~

🎯 后续拓展方向

完成本教程后,你可以根据兴趣继续学习:

  • NoSQL数据库:Redis(缓存)、MongoDB(非结构化数据)
  • 数据仓库:ClickHouse、Snowflake(大规模数据分析)
  • 数据库集群:MySQL主从复制、PostgreSQL流复制
  • 云数据库服务:阿里云RDS、腾讯云PostgreSQL、AWS Aurora
  • 数据库安全与合规性:数据加密、审计日志、权限分级