原题目数据库请查看作者资源免费下载
(https://download.csdn.net/download/MeiJin_/86403712)

多表查询的思路 类似于生活日常中解决问题方式 第一步干什么第二步干什么
连表操作就是 先将所有涉及到结果的表全部拼接到一起形成一张大表 然后从大表中查询数据

1、查询所有的课程的名称以及对应的任课老师姓名

(看题 首先看题目我们会需要两张表 一个课程 一个教师 只需要拼接在一起获取到信息即可)

select course.cname,teacher.tname from course inner join teacher on course.teacher_id = teacher.tid

2、查询平均成绩大于八十分的同学的姓名和平均成绩

select student_id,avg(num) from score GROUP BY student_id;   # 拿到分数表获取每个学生的平均分
select student_id,avg(num) from score GROUP BY student_id HAVING AVG(num) > 80; # 获取平均分大于80的同学ID
select * from student INNER JOIN (select student_id,avg(num)as avg_num from score  # 注意如果不命名则无法取值
GROUP BY student_id HAVING AVG(num) > 80)as t1 ON student.sid = student_id; # 拿学生的分数id去跟学生表对接
select student.sname, t1.avg_num from student inner join(select student_id,avg(num))as avg_num
FROM score GROUP BY student_id HAVING AVG( num ) > 80 ) AS t1 ON student.sid = student_id;      # 我们只需要学生的姓名以及成绩即可

3、查询没有报李平老师课的学生姓名

select tid from teacher where tname ='李平老师'; # 先获取到老师的编号 2
select cid from course WHERE teacher_id = (select tid from teacher where tname ='李平老师')   # 再通过老师的编号去获取课程编号 2 4
select DISTINCT student_id FROM score WHERE course_id in # 根据课程编号 去分数表中筛选出选择了课程的学生编号 DISTINCT 去重复
(select cid from course WHERE teacher_id = (select tid from teacher where tname ='李平老师'))
select sname from student WHERE sid not IN
(select DISTINCT student_id FROM score WHERE course_id in   # 通过学生的编号 在分数表中取反 看没有选择李平老师的课程学生姓名!
(select cid from course WHERE teacher_id = (select tid from teacher where tname ='李平老师')))

4、查询没有同时选修物理课程和体育课程的学生姓名

select cid from course WHERE cname in ('物理','体育')    # 先获取到课程的ID 23
select * from score where course_id in (select cid from course WHERE cname in ('物理','体育')) # 在分数表中 获取到选择了课程的id
select score.student_id from score WHERE course_id in (select cid from course WHERE cname in ('物理','体育'))
GROUP BY score.student_id HAVING COUNT(score.course_id) = 1 # 通过分数表 获取到选择课程的学生id 只要课程只出现过一个的ID
select sname from student where sid IN(select score.student_id from score WHERE course_id in #   通过学生表获取名称
(select cid from course WHERE cname in ('物理','体育')) GROUP BY score.student_id HAVING COUNT(score.course_id) = 1)

5、查询挂科超过两门(包括两门)的学生姓名和班级

select * from score WHERE num < 60    # 先获取分数少于60分不及格的
select student_id from score WHERE num < 60 GROUP BY student_id HAVING COUNT(course_id) >=2 # 按照学生的ID 分组出超过两门或者等于两门的
select * from class INNER JOIN student on class.cid = student.class_id #  链接班级表和学生表
SELECT class.caption, student.sname FROM class INNER JOIN student on class.cid = student.class_id WHERE student.sid in
(SELECT student_id FROM score WHERE num < 60 GROUP BY student_id HAVING count(course_id) >=2) # 通过拼接的表 拿到学分少于60不及格的班级以及姓名

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点点赞收藏+关注 谢谢支持 !!!

MySQL数据库多表查询练习题相关推荐

  1. mysql数据库多表查询(内连接,外连接,自连接,子查询及案例分析)

    mysql数据库多表查询 之前接触的项目或者自己涉及的部分对于多表查询的使用都比较的少,常常是自己更具案例进行学习,最近见到的比较的多,所以今天就好好的总结一下,为下一步学习做准备! 1.多表查询关系 ...

  2. MySQL数据库多表查询

    MySQL数据库多表查询 前言 在之前的文章MySQL数据库之SQL入门中,我们讲到了四类SQL中的DQL(数据库查询语言,用于查询表中数据),但是我仅仅用DQL去查询一张表中数据,而在实际的应用中, ...

  3. MySQL 数据库单表查询——高级查询

    当遇到一些复杂的需求时,例如对查询结果进行排序,分组和分页等,MySQL 数据库有着更高级的查询方法以处理更加复杂的需求. 一,排序查询 在查询完成后,结果集中的数据是按默认顺序排序的.为了方便用户自 ...

  4. mysql数据库多表查询教程

    SQL会创建多表及多表的关系 需求: 分类表和商品表之间是不是有关系?如果有关系,在数据库中如何表示这种关系 ... 表结构请参考上一章 mysql单表查询. 技术分析: 多表之间的关系如何来维护 外 ...

  5. MySQL数据库多表查询,子查询

    写博客的第四天,今天来点数据库的操作,温故而知新,在前进的路上,多看看自己曾经走过的路,不要忘了自己是怎么一步一步走过来的,对于前方未知的道路,不要轻言放弃. 今天的内容全部是MySQL里面的语句,基 ...

  6. MySQL数据库—多表查询

    文章目录 绪论 交叉连接 内连接 左外连接 右外连接 联合查询 绪论 多表查询顾名思义就是数据同时从多张表中获取,查询语句同时涉及到多张表,多表查询有多种语法,即:交叉连接,内连接,左外连接,右外连接 ...

  7. mysql数据库连表查询的几种方法

    1.首先介绍表连接分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接:join,inner join B)外连接:left join,left outer join,right join ...

  8. MySQL数据库----多表查询,表连接

    一.查询概述: 查询:指的是针对表中已经存在的数据,可以按照特定组合,条件,或者次序等等来进行一系列的检索查看操作------>select语句. 二.查询的基本操作: 1.查询语句的基本结构: ...

  9. MySQL数据库——多表查询介绍

    目录 数据准备 笛卡尔积 内连接 显示内连接 隐式内连接 外连接 左外连接 右外连接 子查询 基本运用举例 子查询的不同情况 子查询的结果是单行单列的 子查询的结果是多行单列的 子查询的结果是单行多列 ...

最新文章

  1. 华科计算机学院多难考,计算机学院2019年硕士研究生入学考试成绩公告
  2. 5月23日 JavaScript
  3. 人脸识别领域相关金融标准将出台
  4. python random
  5. 中英文论文高效排版插件一一 Tip ( Text Image P rocessing )
  6. html 标签 anki,为什么不建议使用Anki模板里的标签?
  7. Python 3.6模拟输入并爬取百度前10页密切相关链接
  8. BitMEX将调整Impact Notional和Index Price Protection两个参数
  9. Ubuntu18.04图片信息查看器
  10. Java的String/byte[]/16进制相互转换
  11. 【Tensorflow/keras】KeyError: ‘loss‘
  12. 计算机文化基础模拟练习系统的设想
  13. 写一个函数,求一个字符串的长度。
  14. 侏罗纪怪兽世界怎么登陆服务器未响应,全金属怪物一直登入不进去怎么办
  15. vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息
  16. C 语言吧 · 问题资料大全
  17. 全国计算机一级WORD第三套,全国计算机等级考试一级WPSOffice练习题及答案第三套.docx...
  18. Java 基础学习之类集框架 十 (SortedMap 接口)
  19. Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序
  20. win10磁盘分区解决方案

热门文章

  1. CSAPP学习笔记 day1
  2. csgo服务器性能要求,CSGO服务器怎么选择合适的配置?CSGO服务器如何选择系统?...
  3. ssh passphrase 测试
  4. graph classification and drug discovery
  5. ultraiso安装matlab,ubuntu U盘安装教程:UltraISO采用U盘安装ubuntu12.10
  6. 占卜源码|塔罗牌占卜源码php开发搭建
  7. android 视频直播SDK
  8. 关于c语言程序的重点问题,c语言程序设计题跪求高人的复杂版~慢步不要紧主要是要对~题目:作? 爱问知识人...
  9. 上海交通大学计算机系非全日制,关于上海交通大学非全日制研究生中最便宜的专业...
  10. SecureCRT安装与配置(重点:心跳配置)