MySQL系列理解运用union(all)与limit及exists关键字教程

 更新时间:2021年10月26日 12:00  点击:2410 作者:数据分析与统计学之美

1.union:可以将查询结果相加

union用于将查询结果相加,尤其是将两张毫无关系的表中的数据,拼接在一起显示的时候。
但是有一个前提条件:不同结果进行拼接的时候,列数必须相同。

利用下方的数据说明union的用法:

在这里插入图片描述

1)union all:不能去重

在这里插入图片描述

2)union:可以达到去重的效果。

在这里插入图片描述

2.limit:分页查询全靠它

1)对limit用法的一些说明

① limit是MySQL中特有的,其他数据库中没有,不通用;

② limit取结果集中的部分数据,这是它的作用;

③ limit是sql语句最后执行的一个环节;

 limit的使用语法:

limit startIndex,length; 其中startIndex表示起始位置,从0开始,0表示第一条数据,length表示取几个。

2)案例说明

数据源如下:

在这里插入图片描述

① 取出工资前五名的员工,显示其信息。

在这里插入图片描述

②找出工资排名在第4到第9名的员工。

在这里插入图片描述

3)通用的标准分页SQL

在这里插入图片描述

根据上图可以发现:

在这里插入图片描述

拿百度浏览器进行说明:

在这里插入图片描述

3.exists用法:又称"相关子查询"

在这里插入图片描述

1)带你理解exists的执行原理

数据源如下:

在这里插入图片描述

① 当返回结果是一行记录的情况

在这里插入图片描述

② 当返回结果是多行记录的情况

在这里插入图片描述

③ 原理解释

从上图演示可以发现,不管exists关键字后面的SQL语句,不管是查询出一条结果,还是多条结果,只要查出结果,整个结果就是True,而MySQL中True就用1表示,所以最终结果就是1。一旦exists关键字后面的SQL语句,查询不出任何一条结果的时候,最终的返回值就是False,在MySQL中False就用0表示,所以最终结果就是0。

2)案例演示

利用下方的数据源,完成如下两个练习题。

在这里插入图片描述

① 查询jobs表中,哪个工作有人做?

在这里插入图片描述

② 查询jobs表中,哪个工作没有人做?

在这里插入图片描述

3)一张图说明exists子查询的原理

在这里插入图片描述

解释如下:

"有一个A公司,公司中所有的工作都在jobs表,emp表中可以看到哪些工作已经被做了"
select jobs.job
from jobs
where not exists(select * from emp where jobs.job=emp.job);

1)搞清楚你要得到的结果是什么。
   这里你要得到的是"哪些工作没有人做",也就是说返回的结果来自于jobs表,但是
   "怎么知道哪些工作有人做,哪些没人做呢?",这就需要我们对照emp表。

2)首先从jobs表中,取出第一条记录,扔进到emp表中和该表的每一行进行匹配。当匹
   配到第一行的时候,由于emp表中的每一行都有8列,你究竟想匹配什么呢?是不是应该明
   确指明以下,也就是"where jobs.job=emp.job"这个条件,这个条件表明,我从jobs
   表中取出第一条记录,去和emp中每一行进行匹配,并且我更为明确,我是和你第一行的
   job字段进行匹配,你只需要看看jobs.job和emp.job是否相等,如果相等,返回该条记
   录,接着,拿着第一行再往下依次匹配,只要是jobs.job和emp.job是否相等,就返回
   该条记录。因此jobs中的第一行和emp中每一行进行匹配,就会返回一个结果集。

3)再看exists关键字,exists()返回的结果是true或者false,当括号中有值的时候,
   就是存在,返回的是true;当括号中没有值的时候,返回的是false。根据(1)中,我们
   已经知道,jobs中的第一行和emp中每一行匹配后,返回了一个结果集,也就证明有返回
   值,因此exists()返回的结果是true。

4)当在exists()前面加了一个not,表示取反。exists()返回的是true,not exists()
   返回的就是false。

5)根据上述叙述,当not exists()变为false后,原始语句就相当于变为:
   select jobs.job from jobs where false;
   因此,第一行clerk不能被取出来。

6)接着,再拿jobs中的第二行"SALESMAN",去和emp表中的每一行进行一一匹配,依然重
   复上述步骤。

以上就是MySQL系列一文读懂union(all)与limit及exists关键字教程的详细内容,更多关于MySQL系列union(all)与limit及exists关键字的资料请关注猪先飞其它相关文章!

原文出处:https://huang-tong-xue.blog.csdn.net/article/details/1074347

[!--infotagslink--]

相关文章

  • C# 中的var关键字详细介绍

    这篇文章主要介绍了C# 中的var关键字详细介绍的相关资料,需要的朋友可以参考下...2020-06-25
  • C#中的yield关键字的使用方法介绍

    yield这个关键字是和迭代器挂钩的,而且是与return一起以yield return的形式合用的,用来返回迭代器中的条目。...2020-06-25
  • php关键字仅替换一次的实现函数

    对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了php相关函数文档,发现php本身是没有函数实现这个功能的,所以不得不自己解决了。总结了几种可行方法,小记一下! (1...2015-10-30
  • c# volatile 关键字的拾遗补漏

    这篇文章主要介绍了c# volatile 关键字的相关资料,帮助大家更好的理解和学习c#的相关知识,感兴趣的朋友可以了解下...2020-12-08
  • Spring Data JPA 关键字Exists的用法说明

    这篇文章主要介绍了Spring Data JPA 关键字Exists的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-10
  • 用python获取txt文件中关键字的数量

    这篇文章主要介绍了如何用python获取txt文件中关键字的数量,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-24
  • Java类的访问权限关键字用法说明

    这篇文章主要介绍了Java类的访问权限关键字用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-29
  • 详解C语言中const关键字的用法

    这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • Swift中static和class关键字的深入讲解

    这篇文章主要给大家介绍了关于Swift中static和class关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30
  • C#中var关键字用法分析

    这篇文章主要介绍了C#中var关键字用法,实例分析了C#中var关键字的应用场合,对于.NET的学习具有一定参考价值,需要的朋友可以参考下...2020-06-25
  • C#中fixed关键字的作用总结

    以下是对C#中fixed关键字的作用进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
  • C 语言restrict 关键字的使用浅谈

    C 语言restrict 关键字的使用浅谈,需要的朋友可以参考一下...2020-04-25
  • MySQL系列理解运用union(all)与limit及exists关键字教程

    这篇文章主要为大家介绍了MySQL系列中union(all)、limit及exists关键字的教程示例讲解,通过本篇文章就可以理解MySQL中的这些关键字的概念以及实际的运用...2021-10-26
  • C#基础语法:Base关键字学习笔记

    这篇文章主要介绍了C#基础语法:Base关键字学习笔记,本文讲解了它的一些基础知识以及测试代码,需要的朋友可以参考下...2020-06-25
  • .net(c#)中的new关键字详细介绍

    在 C# 中,new 关键字可用作运算符、修饰符或约束...2020-06-25
  • C# 撒列实现关键字过滤的实例

    C# 撒列实现关键字过滤的实例,需要的朋友可以参考一下...2020-06-25
  • PHP中file_exists与is_file,is_dir的区别

    在php中file_exists与is_file,is_dir都可以用来检测目录或文件是否存在了,那么它们三者的具体区别在哪里呢,下面我们一起来看看吧。 很显然file_exists是受了asp...2016-11-25
  • Java中final关键字的使用与注意总结

    这篇文章主要给大家介绍了关于Java中final关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-08-20
  • 关于java关键字this和super的区别和理解

    这篇文章主要给大家介绍了关于java关键字this和super的区别和理解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-01