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 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...
随机推荐
- eclipse工程当中的.classpath 和.project文件什么作用?
.project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置.classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH .classpa ...
- Ocelot中文文档-不支持
Ocelot不支持一下几点... 分块编码 - Ocelot将始终获取body大小并返回Content-Length头. 如果这不适合你的场景,只能表示抱歉! 转发host头 - 您发给Ocelot的 ...
- linux配置https站点
配置https站点呢,那就需要https证书,证书从何而来,花钱买?no,no,no,阿里有免费的,只是比较难发现,下面就图文解说一下怎么买免费的阿里https证书 首先阿里云,登录,购买链接———— ...
- C#语言中的XmlSerializer类的XmlSerializer.Serialize(Stream,Object)方法举例详解
在对象和 XML 文档之间进行序列化和反序列化操作. XmlSerializer 使您能够控制如何将对象编码为 XML. 命名空间: System.Xml.Serialization程序集: S ...
- 【转】asp.net获取当前页面的url地址
设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://"是协议名 "www.jb5 ...
- Oracle数据库逻辑迁移之数据泵的注意事项
环境:数据迁移,版本 11.2.0.4 -> 12.2.0.1 思考: 对于DBA而言,常用物理方式的迁移,物理迁移的优势不必多说,使用这种方式不必担心对象前后不一致的情况,而这往往也解决了不懂 ...
- java(二、基础语法和基本数据类型)
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
- Python_字符串的映射与可变字符串的应用
''' maketrans().translate() maketrans()方法用来生成字符映射表,而translate()方法则按映射表中定义的对应关系转换并替换其中的字符,使用这两个方法的组合可 ...
- 如何使用 toml 配置 SpaceVim
配置 SpaceVim 主要包括以下几个内容: 设置 SpaceVim 选项 启动/禁用模块 添加自定义插件 添加自定义按键映射以及插件配置 设置SpaceVim选项 原先,在 init.vim 文件 ...
- Oracle12c中PL/SQL(DBMS_SQL)新特性之隐式语句结果(DBMS_SQL.RETURN_RESULT and DBMS_SQL.GET_NEXT_RESULT)
隐式数据结果特性将能简化从其他数据库到Oracle12c存储过程迁移.1. 背景T-SQL中允许查询结果的隐式返回.例如:下面T-SQL存储过程隐式返回查询结果.CREATE PROCEDURE Ge ...