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

时间: 2024-12-19 18:56:27

MYSQL-----使用select查询,解题思路总结---精髓!的相关文章

MySQL之select查询、function函数

一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 select name,age from temp where age = 22; //as对列重命名 //as可以省略不写,如果重命名的列名出现特殊字符,如单引号,那就需要用双引号引在外面 select name as '名称' from temp; //给table去别名 select t.name Name from tem

转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这么个职位吧.好吧,对数据库最深的印象还停留在大学<数据库原理>这堂课上,什么第一范式,第二范式…,这些理论的东西,多多少少还是记得 点,至于更深层次的,我不会.所以呢,撸起袖子,开始学习吧. 干程序员,最不怕的就是学习,如果你连学习都怕了,那还是早点退出这行吧.你说是吧.而我今天这篇文章,既不总结

MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操作 模型 ***** 特色功能 从数据库建立模型 模型页面基本操作 用模型设计数据库并导出 结构.数据导入导出 导出 导入 附属小功能 刷新小按钮 查看操作对应sql语句 执行时间查看 手动筛选数据 练习 数据准备 使用SQL语句导入表结构与数据 如何验证答案是否正确 题目 部分参考答案(只放了两题的) 少

mysql SELECT查询

一.单表查询 1.一般查询.2.聚合函数.排序 3.别名.4.分组.5.分组过滤.6.限制显示条目.7.杂项. 二.多表查询 1.联结查询.2.子查询.3.联合查询. 数据库版本:5.5.46-MariaDB 说明一下这几张表,这是在上马哥课程的时候给的生成表的sql备份文件. 在文章最后我把它放到附件中. 注意:在linux上表名是区分大小写的. 如果搞不清语句顺序请看:help select 一.单表查询 1.一般查询 MariaDB [hellodb]> SELECT * FROM stu

MySQL由浅入深练级之SELECT查询用法(一)

mysql由浅入深练级之select查询用法(一) 注意: 练习前请先下载附件里的文件,并且将文件导入mysql中,导入方法为mysql -u user -h host -p password < hellodb.sql  多表查询一定要多设定约束条件 SELECT查询练习 首先是连接mysql,我这里没设置密码,直接输入mysql就连接进来了.                 1.先查询有哪些数据库                 mysql> SHOW DATABASES; +------

Mdx Select查询的核心思路

MDX和TSql有很大的不同,MDX select查询语句的核心思路是对cube进行切片,对切割后的cube计算Measure的聚合值就是查询的结果.每一次切片都将cube进行切割,剔除不满足切片条件的成员. Cube的Schema非常简单,只有两个Dimension和一个Measure Group. 1,一个使用嵌套查询的MDX语句 SELECT NON EMPTY { [Measures].[Fact Product Inventory Count], [Measures].[Unit Co

MySQL学习笔记(10)之select查询语句

select查询语句 格式: Select 选项 字段列表 from.where like.group by.haring.order by.limit: 字段列表:select * from 表名: Select (字段名) from 表名: 字段部分可参与的运算. Select 字段±数字 from 表名: 1.别名: Select 字段名 as 别名 from 表名: 2.From子句: 查询多个表: select 表1.字段1,表1.字段2...表2.字段1... From 表1,表2:

linux下mysql Select查询命令

SELECT查询格式: SELECT 字段 FROM 表 WHERE 条件; 例如: SELECT * FROM 表名;           #查询表所有内容 SELECT 字段1,字段2... FROM 表名;       #投影,仅显示指定字段中的内容 SELECT [DISTINCT] * FROM 表名 WHERE 条件; #选择,仅显示符合条件的所有字段部分行内容 SELECT * FROM students; SELECT Name,Age FROM students; SELECT

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'