您的位置: 翼速应用 > 业内知识 > 数据库 > 正文

详细的MySQL联合查询(IN和EXISTS之间的区别)

    笛卡尔积

 

    笛卡尔积是指数学中两组X和Y的笛卡尔积,也称为直积,表示为X×Y,第一个对象是X,第二个对象是X的一个成员。Y的所有可能的有序对[3]。  

    假设集合A = {a,b}且集合B = {0,1,2},则这两个集合的笛卡尔积为{(a,0),(a,1),(a,2  ),(b,0),(b,1),(b,2)}。


    内连接

内连接1.png

内连接2.png

    外连接


    外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。

外连接3.png

外连接4.png

外连接5.png

    自连接


    涉及到行与行之间的比较时,就需要自连接了

    示例:显示所有“计算机原理”成绩比“Java”成绩高的成绩信息

自连接6.png

    子查询


    子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

    单行子查询:返回一行记录的子查询

    案例:查询与“小白” 同学的同班同学:

子查询7.png

    多行子查询:返回多行记录的子查询


    [NOT] IN关键字:

    先执行子查询的SQL,得到的结果放到内存中,再进行外层查询,就直接把给出的限制条件和子查询的结果比较,筛选就好了。(依赖内存,适合子查询的结果集合比较小的情况)

    [NOT] EXISTS关键字:

    先执行外层查询,依次取每一条外层查询的记录,带入到里层查询中

    如果里层查询的结果集合非空,就保留外层查询到的结果

    如果里层查询的结果集合为空,就丢弃外层查询到的结果

    不依赖内存,适合外层查询结果集合小,子查询的结果集合比较大的情况

    合并查询


    为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION

    和UNION ALL时,前后查询的结果集中,字段需要一致。

    union

    该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

    案例:查询id小于3,或者名字为“英文”的课程:

union8.png

    union all 

    该运算符用于获取两个结果集的并集。使用此运算符时,结果集中的重复行将不会被删除。  

    情况:查询ID小于3或名称为“ Java”的课程:

union all9.png

我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题