zoukankan      html  css  js  c++  java
  • MYSQL——解题查询语句答题思路,再难的查询都不怕!

      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查询的解题思路写完了,解题思路梳理清楚,在难的查询题也不怕,公司目前就剩我一个人啦,赶紧跑回家~~端午节走起!

  • 相关阅读:
    凭什么要用面向对象编程(补充)
    一篇面试题文章引发的“争议”
    伍迷创意随想集 之 杯具拥有个性,个性成就杯具
    Apple Mac OS X每日一技巧016:MacBook电源线如何缠绕
    Apple Mac OS X每日一技巧008:快速调整/删除菜单栏上的图标
    《C#妹妹和ObjectiveC阿姨对话录》(05)自动释放池--拆迁队的外援
    Apple Mac OS X每日一技巧005:Photo Booth把你的Mac当成照相机
    Apple Mac OS X每日一技巧010:查看本机的版本、版号和序列号
    Apple Mac OS X每日一技巧009:option键和菜单栏的系统图标
    Apple Mac OS X每日一技巧004:抓屏那点事(截屏/抓图/截图)
  • 原文地址:https://www.cnblogs.com/syw20170419/p/6914235.html
Copyright © 2011-2022 走看看