MySQL 数据库
杨宏霞《数据库技术及应用(MySQL)》配套自学练习。分步执行可视化 + 即时练习反馈, 卡片底部的进度条反映你的掌握度。
MySQL 架构总览
交互式从连接器到存储引擎,一条 SQL 要过五道关
锁机制与死锁
交互式写数据先加锁;互相等对方的锁就死锁,系统挑一个「牺牲」
InnoDB 日志体系
交互式undo 记怎么撤销、redo 记怎么重做、binlog 给主从同步用
主从复制
交互式主库写 binlog,从库拉回去重放——读写分离的地基
数据库系统概述
交互式数据、数据库、DBMS 三者什么关系,三级模式怎么分层
MySQL 数据查询
分步执行SELECT 挑列、WHERE 挑行、GROUP BY 分组统计
SQL 内连接 JOIN
分步执行两表按条件配对,结果像滚雪球一样逐行长出来
SQL 左外连接 LEFT JOIN
分步执行左表全部保留,右表没配上的位置填 NULL
SQL 分组聚合 GROUP BY
分步执行按列分组,每组算出一个统计值:计数、平均、最大最小
SQL 子查询
分步执行查询里套查询:先算里层的,外层拿结果当条件或当表
事务隔离级别
分步执行读未提交、读已提交、可重复读、串行化,逐级封堵并发异常
高级查询
分步执行HAVING 筛组、EXISTS 判存在、UNION 拼接结果
窗口函数
分步执行不折叠行,给每一行附上组内排名或累计值
执行计划与索引选择
分步执行EXPLAIN 告诉你这条 SQL 是全表扫描还是走了索引
建表练习
交互式CREATE TABLE 定结构:每一列的类型、主键与约束
数据更新
分步执行INSERT 插行、UPDATE 改列、DELETE 删行
索引原理
分步执行B+ 树把查找从「翻整本书」变成「查目录」
视图
分步执行一条常用查询的快捷方式,用起来像一张表
触发器
分步执行INSERT/UPDATE/DELETE 发生时,自动执行一段预设逻辑
存储过程
分步执行存在数据库里的「小程序」:参数、变量、IF/WHILE 流程
E-R 模型
分步执行实体、属性、联系三要素画概念模型,再转成关系表
关系规范化
分步执行函数依赖决定哪些列放一起,范式逐级消除冗余
事务与并发控制
分步执行ACID 四个特性;并发执行要靠隔离级别护航
用户与权限管理
交互式建用户、授权限(GRANT)、做备份恢复
SQL 函数演练
真实执行字符串截取拼接、数值四舍五入、日期格式化、NULL 兜底
CASE 表达式
真实执行行内条件分支:按分数段打标签、行转列统计
WHERE 与 HAVING
真实执行WHERE 先筛行,GROUP BY 分组后 HAVING 再筛组
DISTINCT 与分页
真实执行DISTINCT 去重、LIMIT 翻页,以及「页越深越慢」的原因
SQL 集合运算
真实执行UNION 并、INTERSECT 交、EXCEPT 差;两边列结构必须一致
JOIN 家族
真实执行RIGHT、FULL、CROSS、自连接——每种 JOIN 各自保留谁
视图更新限制
真实执行简单视图能改,带聚合、分组、多表拼接的视图不能改
约束体系
真实执行主键、唯一、非空、检查、外键——数据的五道防线
索引查询与回表
概念演示二级索引先找到主键,还要回主键树取整行;只查索引列就不用回
索引失效实验
真实执行列上套函数、隐式转换、前导 %……索引说失效就失效
EXPLAIN 详解
真实执行读执行计划:谁先执行、扫多少行、用没用上索引
锁等待与死锁甘特图
概念演示两个事务的加锁时间线一交叉,死锁现场一目了然
可串行化调度
概念演示冲突操作对不交换顺序的串行序列,就是等价的并发调度
SQL 工作台
关卡制亲手写 SQL:真实执行、逐关解锁、即时判分反馈