然后快速学习数据库
如果目标是快速学到“能写项目、能应付基础面试”,建议先选 MySQL,围绕一个具体项目学,不要一开始同时学好几种数据库。 比如做一个“面试手记”练习项目:用户发布面经,面经关联公司,其他用户收藏文章。用这个场景串起数据库知识。 第一步:建表和写 SQL 先建 users、posts、companies、favorites 四张表,理解主键、外键、唯一约束,以及一对多、多对多关系。 例如,一个用户可以发多篇面经,所以 posts 里存 user_id;一个用户能收藏多篇面经,一篇面经也能被多人收藏,因此单独建 favorites,并让 user_id 与 post_id 的组合唯一,防止重复收藏。 SQL 至少练到能独立写出:筛选某公司的面经、按时间排序、关联作者昵称、统计各公司面经数量、找出收藏量最多的文章。这里会用到 WHERE、ORDER BY、JOIN、GROUP BY 和聚合函数。 第二步:把数据库接进项目 实现发布、修改、删除、分页查询、收藏功能。不要只用 ORM 点点点,要知道它最终执行了什么 SQL。 重点理解 NULL 和空字符串的区别、为什么金额通常不用浮点数、为什么查询要参数化而不是拼接用户输入。 第三步:理解索引和事务 索引用真实查询学:经常“按公司筛选,再按发布时间排序”,就研究 posts(company_id created_at) 这样的联合索引,再用 EXPLAIN 看执行计划。别背“建了索引就一定快”,要看查询条件、数据量和实际执行方式。 事务用“收藏记录和收藏计数同时更新”来理解:两步操作要么一起成功,要么一起回滚。再延伸到 ACID、隔离级别、锁和死锁。 第四步:有面试需求,再补原理 优先补 B+ 树、聚簇索引与二级索引、回表、覆盖索引、最左前缀、MVCC,以及 undo log、redo log、binlog 各自的作用。先弄清它们解决什么问题,再背术语。 快速学习的关键不是看完一门课,而是“能设计几张表,写出常用查询,接通一个项目,并解释一条查询为什么慢”。 你现在是 SQL 零基础,还是已经会增删改查、想补数据库原理?