首页 > 代码库 > MYSQL-----使用select查询,解题思路总结---精髓!

MYSQL-----使用select查询,解题思路总结---精髓!

  select查询语句,作为测试人员,使用此语句是家常便饭,是必须掌握的部分,由开始学习mysql到网上搜索试题做,开始做题一塌糊涂,拿到题目就晕,无从下手,现在慢慢总结了一套自己做题的方式,很开森,嘿嘿!由简单试题到较难试题的解答,思路其实都是一样的,今天将做题思路进行总结,(说明:用到的关键字等自行学习,只讲解题思路)详见如下:

我们在查询时会用到的表,有4张表格如下:

技术分享

1、查询出‘计算机系’教师所教课程的成绩表

解题思路:
  1.1)首先根据题目要求,找到相关连表,此处涉及到的表为:教师表、课程表、成绩表
1.2)找到三张表之间的关联点,如:teacher表与course表,相关联点:tno。course表与score表,相关联点:sno
首先已将题目进行拆解,拆解之后一步一步进行查询,直到查询到题目要求的结果,根据题目解题步骤分为3步,同时每步带了具体的查询语句:
  第1步:查找‘计算机系’在哪个表中,根据图可看出‘计算机系’在teacher表中。并且列名显示为depart,根据此些信息查找代表‘计算机系’的教师编号:

   select
tno from teacher where depart = 计算机系; #1、结果:tno为:804、825

第2步:根据第1步的查找的tno结果在相关联的course课程表中查找tno对应的sno数据,因此需将“第1步”作为条件
  
select cno from course where tno in (select tno from teacher where depart = 计算机系) #2、结果:3-105、3-245

第3步:前2步已经将‘计算机系’的老师与所教课程查找完成,最后剩下查找成绩,因此将‘第2步’查找的cno结果作为条件,在成绩表中查找sno值对应的成绩即可      
select cno,degree from score where cno in(select cno from course where tno in (select tno from teacher where depart = 计算机系)) #3、结果:cno为3-105、3-245对应的degree将全部显示出来

#运行第3步,显示的就是题目要求的结果

 

2、查询出‘李诚’老师教的学生的最高成绩,结果显示:最高成绩的学生基本信息以及成绩

解题思路:
第1步:查询‘李诚’老师的tno
  select tno from teacher where tname=李诚 #结果显示:804

第2步:已第1步的查询结果为条件,在course课程表中查找tno对应的cno课程编号
 select cno from course where tno in(select tno from teacher where tname=李诚‘) #结果显示:3-245


第3步:已第2步的cno结果为第三步的条件,查找出cno课程编号在score成绩表中对应的成绩.此处为查看结果的正确性,在结果显示时添加了cno

  select cno,degree from score where cno in (select cno from course where tno in(select tno from teacher where tname=‘李诚‘)) #查询结果:3-245对应的成绩有:86,75,68

第4步:第3步完成后,已经将‘李诚’老师教的学生成绩全部查出来了,根据题目要求,需要查找最高成绩,因此将第3步进行修改,需要用到max(查找最大)
  select cno,max(degree) from score where cno in (select cno from course where tno in(select tno from teacher where tname=‘李诚‘))

第5步:以上4步已经将老师对应的学生最高成绩查询出来,剩一步为显示学生基本信息,需要用到student表,因此需要将score与student两个表关联起来,使用sno
select s.*,cno,max(degree) from score sc,student s where cno in (select cno from course where tno in(select tno from teacher where tname=‘李诚‘)) and s.sno = sc.sno;

#运行第5步显示的就是题目要求的结果

 

3、查询出4位老师,每个老师教的成绩最高的学生,结果显示:学生基本信息、老师基本信息、课程名称、成绩,并按成绩由高到低展示

#试题的解答案本宝宝已经列在下方,根据上面写的解题思路,将此答案进行理解就可以啦
select
s.*,t.*,sc.cno,sc.degree from teacher t,course c,score sc , student s where sc.cno in(select cno from course where tno in(select tno from teacher)) and t.tno = c.tno and c.cno = sc.cno and s.sno = sc.sno group by sc.cno order by degree desc;

解题思路总结:

  1、分解试题

  2、查找分解试题之后所要对应的表

  3、查找对应表之间的关联点

  4、一步一步按照分解步骤实现,最后结果就出来啦

完事,本宝宝将mysql查询的解题思路写完了,解题思路梳理清楚,在难的查询题也不怕,公司目前就剩我一个人啦,赶紧跑回家~~端午节走起!

MYSQL-----使用select查询,解题思路总结---精髓!