如何快速学习数据库
想快速学数据库,先把目标定成:能设计表、写查询、接进项目,再补原理。不要一上来就啃整本数据库教材。 用“学生选课”这个小练习,学 MySQL 就够起步了。 第一阶段:会建表、会查询 建三张表:学生 students、课程 courses、选课 enrollments。选课表保存学生 ID、课程 ID 和成绩,同一个学生不能重复选同一门课。 围绕它练这些问题: 查询成绩超过 80 分的学生。 查询每个学生选了哪些课。 统计每门课的选课人数和平均分。 找出没选过课的学生。 这些练习能串起主键、唯一约束、WHERE、JOIN、GROUP BY、HAVING 和子查询。每学一个语法就自己写一道查询,不要只看教程里的答案。 第二阶段:接进一个小程序 实现选课、退课、录入成绩、分页查看课程。用你熟悉的编程语言就行,不必为了学数据库再换语言。 这一步重点搞懂:程序怎么连接数据库、怎么参数化查询、怎么处理重复数据。即使使用 ORM,也要看看实际执行的 SQL。 第三阶段:用具体问题学索引和事务 索引:经常查“某个学生选了哪些课”,就观察选课表是否有以 student_id 开头的合适索引,用 EXPLAIN 查看执行计划。索引不是越多越好,维护索引也有写入成本。 事务:选课时既要写入选课记录,又要扣减课程余量,这两步应该一起成功或一起回滚。再思考“只剩一个名额,两个人同时选课怎么办”,你就能理解为什么还需要锁和并发控制,而不只是背 ACID。 第四阶段:按目标补知识 为了做项目,继续补备份恢复、约束设计、慢查询排查。 为了面试,再补 B+ 树、联合索引、回表、覆盖索引、隔离级别、MVCC,以及几种日志的作用。 为了学校考试,还要按课程要求补关系代数、函数依赖和范式。 最快的学习方式是:只选一套入门资料,边看边写 SQL,每学一块就用上面的项目验证。能不看答案写出关联查询,并解释为什么这样设计表,比“刷完多少小时视频”更能说明学会了。 你是为了考试、求职面试,还是做项目?目标不同,学习重点差很多。