IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【数据库】多表查询二----嵌套查询(子查询) -> 正文阅读

[大数据]【数据库】多表查询二----嵌套查询(子查询)

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 分以上的学生信息

子查询:

连接查询:

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:47:11  更:2022-04-26 11:49:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:47:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码