一、环境准备与数据导入
完成MySQL练习题前需搭建标准数据库环境。建议通过CREATE DATABASE
创建独立数据库(如SQL50),按规范建立四张核心表:学生表(Student)、课程表(Course)、教师表(Teacher)、成绩表(SC),字段定义需完全匹配练习题要求。数据导入推荐使用INSERT INTO
批量插入示例数据,注意日期格式统一为YYYY-MM-DD
,成绩字段采用DECIMAL
类型保留一位小数。
二、掌握基础查询语法
从单表查询开始逐步进阶:
- 基础SELECT:练习字段筛选与条件过滤(如
WHERE s_sex='男'
) - JOIN操作:掌握LEFT JOIN处理空值场景(如查询未选修课程的学生)
- 聚合函数:运用
AVG
、COUNT
完成平均分统计、选课总数计算
典型题型如“查询01课程成绩高于02课程的学生”,需通过自连接成绩表实现。
三、高级查询技巧实战
进阶练习需掌握以下技术:
- 子查询与EXISTS:解决“未选修张三老师课程”等复杂逻辑
- 窗口函数:使用
ROW_NUMBER
实现成绩排名 - CASE语句:完成分数段统计(如优秀/及格/不及格分类)
题型 | 涉及表 | 关联字段 |
---|---|---|
教师授课查询 | Course+Teacher | TId |
学生成绩分析 | Student+SC | SId |
四、性能优化策略
处理复杂查询时需注意:
- 索引优化:为SId、CId等高频查询字段添加索引
- 执行计划分析:使用
EXPLAIN
检查全表扫描问题 - 代码精简:用JOIN替代多次子查询,减少临时表生成
五、综合练习建议
建议分三个阶段练习:前20题巩固基础语法,中间20题提升多表关联能力,最后10题挑战排名、分数段统计等综合应用。每完成5题后通过SHOW PROCESSLIST
检查执行效率,逐步培养性能敏感度。
结论:通过标准化建表、分阶段练习、性能监控三步法,可系统提升SQL编写能力。建议将50题拆解为每日5题的训练计划,配合查询日志分析持续优化。