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——解题查询语句答题思路,再难的查询都不怕!的更多相关文章

  1. mysql查询语句,通过limit来限制查询的行数。

    mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...

  2. MySQL 查询语句优化思路

    query 语句的优化思路和原则主要提现在以下几个方面:1. 优化更需要优化的Query:2. 定位优化对象的性能瓶颈:3. 明确的优化目标:4. 从 Explain 入手:5. 多使用profile ...

  3. MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY)

    在上一篇文章MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介中介绍了EXPLAIN语句,并举了一个慢查询例子:

  4. Mysql常用sql语句(21)- regexp 正则表达式查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...

  5. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  6. Mysql常用sql语句(九)- like 模糊查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  7. Mysql常用sql语句(14)- 多表查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  8. Mysql常用sql语句(6)- limit 限制查询结果的条数

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 实际工作中,我们的数据表数据肯定都是万级别的,如 ...

  9. SQL 查询语句总是先执行 SELECT?你们都错了

    很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...

随机推荐

  1. TensorFlow学习记录(一)

    windows下的安装: 首先访问https://storage.googleapis.com/tensorflow/ 找到对应操作系统下,对应python版本,对应python位数的whl,下载. ...

  2. 10.API 接口自动化测试的基本原理

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 28.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...

  3. MySQL 忘记root密码解决方法,基于Ubuntu 14.10

    忘记MySQL root密码解决方法,基于Ubuntu 14.10 忘了mysql密码,从网上找到的解决方案记录在这里. 编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld] ...

  4. PHP快速获取MySQL数据库表结构

    直接举例某个数据库中只有两个数据表,一个 test ,一个 xfp_keywords ,获取他们的数据库表结构. 此功能可以用于开发人员快速获取数据表结构通过获取的数据生成各种文件形式,用来快速理解数 ...

  5. SublimeText3常用快捷键和优秀插件

    SublimeText3常用快捷键和优秀插件 SublimeText是前端的一个神器,以其精简和可DIY而让广大fans疯狂.好吧不吹了直入正题 -_-!! 首先是安装,如果你有什么软件管家的话搜一下 ...

  6. add two nums

    问题描述: 给定两个链表,计算出链表对应位置相加的和,如果和大于10要往后进位.用链表返回结果.其实上是一种大数加法.可以把一个大数倒着写存入链表,然后两个链表相加就是所需要的大数相加的和 输入 2 ...

  7. js实用技巧

    IIFE(立即调用函数表达式)最广泛的用途是避免污染全局作用域. 已经有很多JavaScript库和JavaScript高手正在使用这种技巧, 尤其是在最流行jQuery插件的开发者中. 你也应该把这 ...

  8. 编程之美2.18 数组分割 原创解O(nlogn)的时间复杂度求解:

    题目:有一个无序.元素个数为2n的正整数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近? 1 1 2 -> 1 1 vs  2 看题时,解法的时间复杂度一般都大 ...

  9. android获取手机机型、厂商、deviceID基本信息

    /** * 系统工具类 */ public class SystemUtil { /** * 获取当前手机系统语言. * * @return 返回当前系统语言.例如:当前设置的是"中文-中国 ...

  10. 深入理解.net - 3.类型Type

    说到类型,.NET技术是基于通用类型系统(CTS,Common Type System)的,而CTS又是构建于公共语言架构(CLI,Common Language Infrastructure)之上, ...