服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL系列理解运用union(all)与limit及exists关键字教程

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

2021-11-25 17:43数据分析与统计学之美 Mysql

这篇文章主要为大家介绍了MySQL系列中union(all)、limit及exists关键字的教程示例讲解,通过本篇文章就可以理解MySQL中的这些关键字的概念以及实际的运用

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

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

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

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

1)union all:不能去重

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

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

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

2.limit:分页查询全靠它

1)对limit用法的一些说明

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

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

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

 limit的使用语法:

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

2)案例说明

数据源如下:

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

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

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

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

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

3)通用的标准分页sql

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

根据上图可以发现:

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

拿百度浏览器进行说明:

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

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

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

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

数据源如下:

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

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

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

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

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

③ 原理解释

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

2)案例演示

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

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

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

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

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

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

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

MySQL系列理解运用union(all)与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(all)与limit及exists关键字教程的详细内容,更多关于mysql系列union(all)与limit及exists关键字的资料请关注服务器之家其它相关文章!

原文链接:https://huang-tong-xue.blog.csdn.net/article/details/107434783

延伸 · 阅读

精彩推荐
  • Mysqlmysql 不能插入中文问题

    mysql 不能插入中文问题

    当向mysql5.5插入中文时,会出现类似错误 ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column ...

    MYSQL教程网5722019-11-25
  • MysqlMySQL锁的知识点总结

    MySQL锁的知识点总结

    在本篇文章里小编给大家整理了关于MySQL锁的知识点总结以及实例内容,需要的朋友们学习下。...

    别人放弃我坚持吖4362020-12-14
  • Mysql详解MySQL中的分组查询与连接查询语句

    详解MySQL中的分组查询与连接查询语句

    这篇文章主要介绍了MySQL中的分组查询与连接查询语句,同时还介绍了一些统计函数的用法,需要的朋友可以参考下 ...

    GALAXY_ZMY5442020-06-03
  • Mysql解决MySQl查询不区分大小写的方法讲解

    解决MySQl查询不区分大小写的方法讲解

    今天小编就为大家分享一篇关于解决MySQl查询不区分大小写的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    Veir_dev5592019-06-25
  • Mysql浅谈mysql 树形结构表设计与优化

    浅谈mysql 树形结构表设计与优化

    在诸多的管理类,办公类等系统中,树形结构展示随处可见,本文主要介绍了mysql 树形结构表设计与优化,具有一定的参考价值,感兴趣的小伙伴们可以参...

    小码农叔叔5242021-11-16
  • MysqlERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event()

    ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 2 ...

    MYSQL教程网6412020-03-13
  • MysqlMySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码

    这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    逆心2972019-06-23
  • MysqlMySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。 ...

    mysql技术网4192019-11-23