如何理解mysql中的union limit exists关键字

技术如何理解mysql中的union limit exists关键字这篇文章给大家介绍如何理解mysql中的union limit exists关键字,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

本文介绍了如何理解mysql中的union limit exists关键字。内容非常详细。感兴趣的朋友可以参考一下,希望对大家有所帮助。

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

union用于添加查询结果,尤其是当两个不相关的表中的数据一起显示时。

但有一个前提条件:不同结果拼接时,列数必须相同。

使用以下数据说明联合的用法:

如何理解mysql中的union  limit  exists关键字

1)union all:不能去重

如何理解mysql中的union  limit  exists关键字

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

如何理解mysql中的union  limit  exists关键字

2.limit:分页查询全靠它

1)对limit用法的一些说明

limit在MySQL中是唯一的,在其他数据库中是没有的,也不是通用的; limit取结果集中的部分数据,这是它的功能; limit是sql语句执行的最后一步;

极限的用法语法:

限制开始索引,长度;其中startIndex表示起始位置,从0开始,0表示第一条数据,长度表示取哪个数据。00-1010数据来源如下:

如何理解mysql中的union  limit  exists关键字

拿出前五名员工,展示他们的信息。如何理解mysql中的union  limit  exists关键字

(2)找出工资排名从第4位到第9位的员工。如何理解mysql中的union  limit  exists关键字

2)案例说明

如何理解mysql中的union  limit  exists关键字

根据上图,可以发现:

如何理解mysql中的union  limit  exists关键字

用百度浏览器解释:

中的union limit exists关键字">
 

 

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

如何理解mysql中的union limit exists关键字
 

 

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

数据源如下:

如何理解mysql中的union limit exists关键字
 

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

如何理解mysql中的union limit exists关键字
 

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

如何理解mysql中的union limit exists关键字
 

 ③ 原理解释

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

一旦exists关键字后面的SQL语句,查询不出任何一条结果的时候,最终的返回值就是False,在MySQL中False就用0表示,所以最终结果就是0。

 

2)案例演示

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

如何理解mysql中的union limit exists关键字
 

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

如何理解mysql中的union limit exists关键字
 

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

如何理解mysql中的union limit exists关键字
 

 

3)一张图说明exists子查询的原理
如何理解mysql中的union limit 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 limit exists关键字就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/39951.html

(0)

相关推荐

  • java中的堆和栈是什么数据结构(java栈的应用数据结构)

    技术java数据结构中栈怎么应用本篇内容主要讲解“java数据结构中栈怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java数据结构中栈怎么应用”吧!1.声明一个栈接

    攻略 2021年12月22日
  • 本末倒置是什么意思,你做过什么本末倒置的事情

    技术本末倒置是什么意思,你做过什么本末倒置的事情【本末倒置 (成语) 】“本末倒置”是一个汉语成语本末倒置是什么意思;本:树根;末:树梢;置:放。意思是比喻把主要的和次要的、本质和非本质的关系弄颠倒了。出自《绥德州新学记

    生活 2021年10月19日
  • 怎样生成一个基础的springboot项目

    技术怎样生成一个基础的springboot项目今天就跟大家聊聊有关怎样生成一个基础的springboot项目,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在线生成

    攻略 2021年12月2日
  • 让我看看英语,让我看看你的钢笔英语怎么说

    技术让我看看英语,让我看看你的钢笔英语怎么说给我看一下你的钢笔,翻译是show me your pen让我看看英语。关键词汇是动词show。 用了词组show sb sth意思是把某物展示给某人看。解释:show

    生活 2021年10月28日
  • 狡猾的狐狸是什么歌,狡猾的狐狸是指什么意思

    技术狡猾的狐狸是什么歌,狡猾的狐狸是指什么意思不论在哪个国家狡猾的狐狸是什么歌、哪个民族,狐狸都是狡猾、奸诈、贪婪的形象。人们没有冤枉它,狐狸生来多疑,诡计多端。如果狐狸遭到猎人的枪击,没被击中,它会采取装死的办法,将身

    生活 2021年10月20日
  • 如何理解MultiScanner模块化文件扫描与分析框架

    技术如何理解MultiScanner模块化文件扫描与分析框架如何理解MultiScanner模块化文件扫描与分析框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个

    攻略 2021年11月25日