1.查询至少选修两门课程的男学生姓名

首先看一下学生表和课程选修表:

查询选修大于两门的男生的姓名就涉及到这两张表。当然有些同学会说这表我人工就可以找,但是大数据可不允许你这么猖狂!

首先看一下谁是男生:

原来这两个人是男生,但是查询还有另外一个要求,就是选修课程至少2门,因此又需要去sc表里找,怎么找?需要student表中的sno字段对应在sc表中的sno,然后分组计算每个sno组中cno的个数,个数>=2也就是达到了我们查询的目标。


这里补充几个知识点:

一、使用in关键字进行查询:

in 关键字用于判断某个字段的值是否在一个集合中。如果字段的值在指定的集合当中,就将字段所在的记录查询出来。如果查询字段的值不在指定的集合当中那就是使用not in

比如说这里的就是查询sno字段中的值有没有在select出来的集合当中。

查询名字叫张立和李勇的记录

查询除了名字叫张立和李勇之外的所有人的信息:

二、having和where的区别

首先写明MySQL在查询的时候关键字的执行顺序

form > where  > group by >having > select > order by >limit(limit是限制输出的记录的数量 limit 3就是输出3条记录)

二者的区别:

一般情况下where用于过滤行,having用于过滤分组(group by)

where的查询条件不能使用聚合函数,但是having可以使用聚合函数(这里的where count(sno)>=2就会报错,但是having却不会,应为count是聚合函数) 这里在稍微介绍一下聚合函数:聚合函数例如sum、count、max、min等,这些函数是作用在多条记录(元组)上的,这是聚合函数与其他特殊函数的区别

where在分组前对数据进行过滤,但having在数据分组后进行过滤(这里就对应这上面的关键字查询时执行顺序,where是在group之前的,但having是在group之后的)

where是根据数据表中的字段进行过滤的,但是having是根据前面已经查询出的字段进行过滤。(比如,select sname,sno,sbrithday from studentr where year(now())-year(sbrithday))>10;

Sbrithday字段都在select关键字后查询出来,但是如果是这样

同样的位置换成where就不会出错)

where查询条件不可以使用字段别名,但是having可以使用。

2.查询与刘晨同一个系的同学姓名;

先查刘晨的所在系然后再找这个系里的其他学生

那么新查找的学生的sdept字段就是is

但是这是分两步实现的哇,肯定不行啊,大数据下嵌套的关系多了去了。可以这样做吗?

很显然不可能。

3.查询学号比刘晨同学大,而年龄比他小的学生姓名,并写出MySQL中sysdate()和now()函数的功能差别。

NOW()函数是语句一开始执行的,SYSDATE()是或获取的动态的实施时间。

举例:

查询出生日期大于所有男同学出生日期的女同学的姓名及系别

ALL关键字返回的结果需要同时满足所有内层的查询条件,这里就需要满足出生日期大于所有男性同学的出生日期。

5.查询成绩比该课程平均成绩高的学生的学号、课程号及成绩

首先为了方便理解先把各个课程的平均成绩列出来

然后就查询的方式就是如下所示:

 知识点:

一、exists关键字后面的参数可以是任意的子查询(子查询就是指一个查询语句嵌套在另一个查询语句内部的查询,可以嵌套在select、select……into、insert……into等语句中,当执行查询的时候首先会执行子查询的语句,再将返回的结果作为外层查询的过滤条件。)

经过我对这一题的理解,我发现也可以这样写:

省去了exists的子查询,但是还是得需要对表设置别名。

查询不讲授“C01”课的教师姓名

先把教授C01课的老师找出来形成一个老师集合,然后将老师教授的课一一对这个集合进行比较,看哪些老师在不在这个集合中

查询没有选修“C02”课程的学生学号及姓名

先找到选修C02的课程的学生

查询选修了“数据库”课程的学生学号、姓名及系别

查询选修了全部课程的学生姓名

因为没有这样的学生所以是空;

首先查出算所有课程的门数,然后看sno在sc出现的次数累计的和是不是这个门数,如果是,那就是选修全部课程的学生。

分别用子查询和连接查询,求“C01”号课程在 80 分以上的学生信息

子查询:

连接查询:

【数据库】多表查询二----嵌套查询(子查询)相关推荐

  1. oracle做子查询注意事项,Oracle子查询详解

    Oracle子查询详解,根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询, 子查询概念 :当一个查询的结果是另一个查询的条件时,,称之为子查询. 使用子查询注意事项: 子查 ...

  2. mysql数据库表子查询语句_MySQL使用子查询教程

    #MYSQL#这是我MyySQL教程的第四篇了,可能对于一些大神来说这些都是小儿科,但是我还是相信这些东西会对一些人有帮助的,本篇主要会介绍上面是子查询以及如何使用它们.大概会从,什么是子查询,利用子 ...

  3. where嵌套select_Select子查询:Select Zoo

    针对Select Zoo题库平台,这次做的是select专题的练习SELECT within SELECT Tutorial和测试Nested SELECT Quiz. 一.SELECT within ...

  4. Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例

    Oracle数据库:子查询.单行子查询,多行子查询,in,any,all语句,子查询的练习案例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 ...

  5. oracle子查询引用外表_Oracle子查询(嵌套查询)

    概念: 所谓子查询,即一个select语句中嵌套了另外的一个或者多个select语句 需求:查找和Smith同部门的所有员工的id和last_name 目标: 员工id,last_name from: ...

  6. Oracle入门--水表项目(单表查询,链接查询,左右外连接,子查询,分页查询)(3)

    水表项目建表 1.1.1 分析 1.1.2 SQL实现 表结构 -- <自来水公司收费系统> -- 1 业主类型表 create table t_ownertype(id number p ...

  7. MySQL 嵌套子查询 with子句 from子查询 in子查询 join子查询

    一.适用场景和方法 (1)适用场景 考虑查询过程中是否存在以下情况: 查询某些数据时需要分组才能得到,某些数据不需要分组就能得到或者分组条件不同: 查询某些数据时需要where条件,某些列不需要whe ...

  8. 零基础带你学习MySQL—单行子查询和多行子查询(二十二)

    零基础带你学习MySQL-多行子查询(二十二) 一.什么是子查询? 子查询是指嵌入在其它 sql 语句中的 select 语句,也叫嵌套查询 二.什么是单行子查询? 单行子查询是指只返回一行数据的子查 ...

  9. Mysql入门学习(二)之子查询+关联

    关联查询(重点) 1.1 子查询 概述:一个查询的结果作为另一个查询的条件 语法:SELECT 列名 FROM 表名 Where 条件(子查询结果) 案例: 查询工资大于Bruce 的员工信息 1.先 ...

  10. 史上最简单的 MySQL 教程(三十二)「子查询(下)」

    子查询 子查询:sub query,查询是在某个查询结果之上进行的,一条select语句内部包含了另外一条select语句. 行子查询 行子查询,返回的结果可以使一行多列或者多行多列. 需求:查询学生 ...

最新文章

  1. (To Me Just)c#中的WebBrowser类的使用注意事项!
  2. MySQL数据库-错误1166 - Incorrect column name 'xxx' 的解决方法
  3. 暖通专业标准规范大全_中高级职称专业分类改革 机械类十大热门专业分享
  4. SpringBoot中整合freemarker时配置文件application.properties示例代码
  5. 【Python】Github上125k+Star的Python算法资料
  6. Go gin获取post请求数据
  7. 【SSM】第一个SpringMVC入门示例
  8. mac brew 安装php扩展报错:parent directory is world writable but not sticky
  9. SSM框架中mapper和mapping.xml文件在同一个包下需要的配置
  10. Rust+Yew之hello world
  11. 李佳琦“云逛”进博会 携手央视带货阿富汗松子
  12. 广科计算机专业3 2分数线,考试网:重庆最新高考录取分数线发布 理科一本533分...
  13. DOM学习之路--Mr.Ember
  14. sp_executesql (Transact-SQL) from MSDN
  15. c++和QT实现俄罗斯方块,使用GraphicsView。
  16. Excel VBA数组使用方法
  17. Python pip安装报错及解决办法:is not a supported wheel on this platform
  18. Dictionary的遍历和修改
  19. 学校心理管理/预测系统
  20. python selenium+firefox 使用已打开的火狐浏览器进行操作(不需要每次都重新打开火狐)

热门文章

  1. 绪论——信息理论学与量子信息学
  2. 模板脚手架资质怎么办理
  3. 使用CSS设置重叠层次
  4. C语言——整型整除,浮点数整除
  5. matlab抗混叠滤波器,试验四音频抗混叠滤波器设计.doc
  6. Mac Xnip 截图软件快捷键设置
  7. 高通三款处理器齐发布 全面死磕联发科
  8. 北京 社保 减员 操作
  9. 海量数据处理方法总结 常见大数据题目汇总
  10. c语言实现五子棋人人对战教程