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:真实执行、逐关解锁、即时判分反馈