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查询的解题思路写完了,解题思路梳理清楚,在难的查询题也不怕,公司目前就剩我一个人啦,赶紧跑回家~~端午节走起!
MYSQL——解题查询语句答题思路,再难的查询都不怕!的更多相关文章
- mysql查询语句,通过limit来限制查询的行数。
mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...
- MySQL 查询语句优化思路
query 语句的优化思路和原则主要提现在以下几个方面:1. 优化更需要优化的Query:2. 定位优化对象的性能瓶颈:3. 明确的优化目标:4. 从 Explain 入手:5. 多使用profile ...
- MySQL查询语句执行过程及性能优化-查询过程及优化方法(JOIN/ORDER BY)
在上一篇文章MySQL查询语句执行过程及性能优化-基本概念和EXPLAIN语句简介中介绍了EXPLAIN语句,并举了一个慢查询例子:
- Mysql常用sql语句(21)- regexp 正则表达式查询
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...
- Mysql常用sql语句(八)- where 条件查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- Mysql常用sql语句(九)- like 模糊查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- Mysql常用sql语句(14)- 多表查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- Mysql常用sql语句(6)- limit 限制查询结果的条数
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 实际工作中,我们的数据表数据肯定都是万级别的,如 ...
- SQL 查询语句总是先执行 SELECT?你们都错了
很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...
随机推荐
- DjangoUeditor项目的集成
DjangoUeditor这个项目,出品人已经不再提供维护支持. 最近在一个使用到aliyun oss的项目里集成了一次这个东西,当然我之前在普通文件上传的北京下已经集成过很多次了. 主要修改的东西就 ...
- Scala编程入门---函数式编程之集合操作
集合的函数式编程: 实战常用: //map案例实战:为List中的每个元素都添加一个前缀. List("leo","Jen","peter" ...
- 文本分类学习 (七)支持向量机SVM 的前奏 结构风险最小化和VC维度理论
前言: 经历过文本的特征提取,使用LibSvm工具包进行了测试,Svm算法的效果还是很好的.于是开始逐一的去了解SVM的原理. SVM 是在建立在结构风险最小化和VC维理论的基础上.所以这篇只介绍关于 ...
- spark SQL随笔
sparkSQL 1.主要的数据结构 DataFreames 2.开始使用:SQLContext 创建步骤: Val sc:sparkContext Val sqlContext=new org. ...
- 云计算一:VMware workstation的安装和使用教程
VMware workstation的安装和使用教程 一.VMware 安装 1.从网上找到VMware的安装包以及要安装的映像文件,下载到本地,然后备份一份存储到百度云盘. 链接:http://pa ...
- angular.js学习的第一天
第一天对angular.js进行学习,肯定是面对的入门的最简单的实例: 实现下面的这个效果,首先需要在html页面引入angular.js,在下面的div中,ng-app则表示在当前div是一个ang ...
- Myeclipse+selenium2.0+Junit+TestNg环境搭建
这周末把自动化的环境搭好了,在网上也百度了很多,现在分享下,希望大家少走一点歪路. 需要用到的安装包都在这个里面,自取: 链接:https://pan.baidu.com/s/10ohf757ztgN ...
- 40多行python代码开发一个区块链。
40多行python代码开发一个区块链?可信吗?我们将通过Python 2动手开发实现一个迷你区块链来帮你真正理解区块链技术的核心原理.python开发区块链的源代码保存在Github. 尽管有人认为 ...
- TensorFlow-谷歌深度学习库 文件I/O Wrapper
这篇文章主要介绍一下TensorFlow中相关的文件I/O操作,我们主要使tf.gfile来完成. Exists tf.gfile.Exists(filename) 用来判断一个路径是否存在,如果存在 ...
- [ 搭建Redis本地服务器实践系列 ] :序言
说起来,是在一个气候适宜的下午,虽然临近下班,不过办公室里还是充满了忙碌的身影,不时的还会从办公区传来小伙伴们为了一个需求而激烈争论的声音,自从入了互联网这个行业,说实话,也就很少休息了,当然了也不全 ...