![22274174b3152e0dc5b0ccf9305268a7.gif](https://i-blog.csdnimg.cn/blog_migrate/de8974e24feb56c0b4b84a0fd41d5c57.gif)
![7852b1e4ef16865ba4c0c306c61b9de5.png](https://i-blog.csdnimg.cn/blog_migrate/8fce94cc3ae2c8c6822642612be94a16.jpeg)
一、表名和字段
–1. 学生表 student (s_id,s_name,s_birth,s_sex) –学生编号,学生姓名,出生年月,学生性别
–2. 课程表 course (c_id,c_name,t_id) –课程编号,课程名称,教师编号
–3. 教师表 teacher (t_id,t_name) –教师编号,教师姓名
–4. 成绩表 score (s_id,c_id,s_score) –学生编号,课程编号,分数
具体详情看 Python 之 MySql 每日一练 00
二、Mysql 题目
查询"01"课程比"02"课程成绩高的学生的信息及课程分数
三、Mysql 分析
● 题目要求
① 学生信息
② 学生对应的 "01" 和 "02" 课程分数
③ 条件:"01" 课程分数高于 "02" 课程分数
● 表分析
![6a4d4a8db5a348d8b17236bafdbbfa45.png](https://i-blog.csdnimg.cn/blog_migrate/48d0f384773049c025b9f654f3049be9.jpeg)
student 表
![3aea38a30eacd97bb99201087cba9d02.png](https://i-blog.csdnimg.cn/blog_migrate/c4bf997e963d0cfe69d01aff76acf4d3.jpeg)
score 表
① s_id 是唯一的
② 同一 s_id 在 score 表中有多条记录
一个同学有多个课程的成绩,有些缺考同学在 score 表中会没有分数记录,比如 s_id = "06",缺考 "02" 课程
③ 由于 "01" 课程 和 "02" 课程的成绩不在同一行,在 Mysql 中不能直接进行比较
需要做连接处理
● sql 分析
① 先查出所有学生的课程 "01" 的分数及该学生信息
![5032742420efa86f37c4ff841bb77f9f.png](https://i-blog.csdnimg.cn/blog_migrate/305f5e7c4d15f10ee0720618fd92661c.jpeg)
![0b2ed18f46b7c0c54bf201c836245bf7.png](https://i-blog.csdnimg.cn/blog_migrate/d6c264aa467d8c2eb97ce96a8f4613cf.jpeg)
② 再用左外联接查出这些学生课程 2 的分数,因为 s_id = "06",缺考 "02" 课程
![9eed737c2559693e4895ca761f441f26.png](https://i-blog.csdnimg.cn/blog_migrate/1d97c641042da16bde9b409b3f09ed81.jpeg)
![a0ddca69a14b343e4cb690d34d555978.png](https://i-blog.csdnimg.cn/blog_migrate/f238f5b14610ed0c90643a30cbb2de36.jpeg)
第二个连接不能用内连接,因为内连接只显示双方条件都符合的,即两个课程都参加考试了的。从表数据可知有人可能缺考
③ 在 where 后加上 b.s_score > c.s_score
![ffcf839ec684565cf19d9bb5dc290ee8.png](https://i-blog.csdnimg.cn/blog_migrate/c91c437875cc3f3087ab27fdfeba0a63.jpeg)
注意:
● on 后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
● 对于主表的筛选条件应该放在 where 后面,不应该放在 on 后面
四、Mysql 方案
![04c0db942fe96ff129d6aad2329d7f52.png](https://i-blog.csdnimg.cn/blog_migrate/ab5eaf6e4ed214263e04d394e3477658.jpeg)
五、扩展 -- 巧用 SQLyog 工具
在我们使用 select * from 表名时,可能因为表名复杂或者相似,容易写错,也比较费时间。
1、先进入图 1 界面
![d2b91be215fe1c98e616cde7affa91f9.png](https://i-blog.csdnimg.cn/blog_migrate/c2bf269bd98d63cfd0e9260a9dac23f7.jpeg)
2、双击表名
![da824d7390adf4c030f59ab35197a0b9.gif](https://i-blog.csdnimg.cn/blog_migrate/367e9db724616375d09c06b5a5b33b04.gif)