理解MySQL七种连接

这篇具有很好参考价值的文章主要介绍了理解MySQL七种连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

理解MySQL七种连接

如上图是MySQL的七种连接

由于MySQ对于外连接支持SQL99语法,我们就以JOIN...ON举例

理解MySQL七种连接 理解MySQL七种连接

 表t_dept                                                                                   表t_emp

 文章来源地址https://www.toymoban.com/news/detail-400387.html

1.内连接:A表,B表交叉的部分

理解MySQL七种连接

SELECT *
FROM t_dept d INNER JOIN t_emp e
ON d.id = e.deptid;

 INNER可省略,执行结果如下

理解MySQL七种连接

 

2.左外连接:A表,B表交叉的部分和A表独有的部分

理解MySQL七种连接

SELECT *
FROM t_dept d LEFT OUTER JOIN t_emp e
ON d.id = e.deptid

OUTER可省略,执行结果如下理解MySQL七种连接 

 3.右外连接:A表,B表交叉的部分和B表独有的部分

理解MySQL七种连接

SELECT *
FROM t_dept d RIGHT JOIN t_emp e
ON d.id = e.deptid

理解MySQL七种连接


  注意看上面两个结果的最后一行,我们可以发现两个表合起来以后在另外一张表中没有内容的地方用null填充了,如此一来左中图和右中图咱们就能写出来了。比如找A表独有的部分就面向A表写个外连接,再加上一个条件  B表的连接条件为null(本例中是d.id或e.deptid)


4.左中图:A表特有的

理解MySQL七种连接

SELECT *
FROM t_dept d LEFT JOIN t_emp e
ON d.id = e.deptid
WHERE e.deptid IS NULL

理解MySQL七种连接 

5.右中图:B表特有的

理解MySQL七种连接 

 

SELECT *
FROM t_dept d RIGHT JOIN t_emp e
ON d.id = e.deptid
WHERE d.id IS NULL

理解MySQL七种连接

 6.右下图:就是上面两个图合起来啦 那怎么合起来呢,就会用到UNION关键字

理解MySQL七种连接

 UNION:合并去重,效率低

UNION ALL:合并不去重,效率高

这里两个都可以用,因为左中图和右中图本来就没有重合的部分,就用效率高的UNION ALL好了。

SELECT *
FROM t_emp e LEFT JOIN t_dept d
ON e.deptid = d.id
WHERE d.id IS NULL
UNION ALL
SELECT *
FROM t_emp e RIGHT JOIN t_dept d
ON e.deptid = d.id
WHERE e.id IS NULL

理解MySQL七种连接

7.满外连接:MySQL不支持FULL JOIN,需要合并操作,我们用效率高的UNION ALL就得选没有重合的两个图,这里以右外连接和左中图合并为例

理解MySQL七种连接

SELECT *
FROM t_emp e RIGHT JOIN t_dept d
ON e.deptid = d.id
UNION ALL
SELECT *
FROM t_emp e LEFT JOIN t_dept d
ON e.deptid = d.id
WHERE d.id IS NULL

理解MySQL七种连接 

 

到了这里,关于理解MySQL七种连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt:上图标下文字的按钮

    方法一: QPushButton 用qss自定义设置上图标下文字的样式 方法二:使用 QToolButton 设置Qt::ToolButtonTextUnderIcon ui-toolButton-setToolButtonStyle(Qt::ToolButtonTextUnderIcon); qss样式设置: 方法三:重写 QPushButton 类自定义上图标下文字的按钮控件类 参考效果:

    2024年02月07日
    浏览(23)
  • Qgis教程13:照片上图 ImportPhotos

    2023年04月09日
    浏览(27)
  • 如何通过3G网共享上网 3G网共享上图文步骤

    操作步骤: 一、现在3G上网卡一般有两种: 1、插在USB接口的上网卡(包括内置在机器里面的),需要安装驱动及软件后连接3G网络上网; 2、类似3G网卡路由器,可供多个设备上网(一般控制在5个内); 由于第二种已经可以使多个设备同时连接上网,基本不涉及如何共享,下

    2024年02月05日
    浏览(39)
  • Idea 安装 Codeium,多次安装失败,爬坑分享特意奉上图文教程

    既然你能搜索到这边文章,那么codeium的好处不言而喻;他可以生成代码,以及上下文猜测你将要写的代码,提高编码效率等等功能。 闲言少叙,直入正题。 安装下图,绿色那个;紫色的需要Money,才能使用。 ①、在Idea面板下双击 Shift 按键搜索 “Auth” 出现如下,点击进入

    2024年01月19日
    浏览(31)
  • SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接)

    连接是什么? 连接(Join)是指将两个或多个表中的数据按照一定的条件关联起来,形成一个新的虚拟表。也可以理解为两个表的笛卡尔积中筛选符合条件的行。 什么是笛卡尔积? 图中名词解析: 元素 :集合中{d1,d2},每一个值称为一个元素,如:d1是一个元素;在表中表示

    2024年02月06日
    浏览(39)
  • Docker网络模型:理解容器网络通信和连接

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月14日
    浏览(39)
  • 软件测试|深入理解SQL CROSS JOIN:交叉连接

    简介 在SQL查询中,CROSS JOIN是一种用于从两个或多个表中获取所有可能组合的连接方式。它不依赖于任何关联条件,而是返回两个表中的每一行与另一个表中的每一行的所有组合。CROSS JOIN可以用于生成笛卡尔积,它在某些情况下非常有用,但在其他情况下可能会导致结果集过

    2024年01月24日
    浏览(49)
  • Jetsonnano B01 笔记1:基础理解—网络配置—远程连接

    今日开始学习 Jetsonnano B01,这是一台小电脑,可以用来: 运行现代 AI 负载,并行运行多个神经网络,以及同时处理来自多个高清传感器的数据,可广泛应用与图像分类、对象检测、图像分割、语音处 理等领域。它还支持许多常见的人工智能框架,让开发人员轻松地将自己偏

    2024年02月10日
    浏览(35)
  • 深入理解TCP三次握手:连接可靠性与安全风险

    导言 TCP简介和工作原理的回顾 TCP三次握手的目的和步骤 TCP三次握手过程中可能出现的问题和安全风险 为什么TCP三次握手是必要的? 是否可以增加或减少三次握手的次数? TCP四次挥手与三次握手的异同点         在网络通信中,TCP(Transmission Control Protocol)作为一种可靠

    2024年02月14日
    浏览(34)
  • 【Java 进阶篇】深入理解 JDBC:Java 数据库连接详解

    数据库是现代应用程序的核心组成部分之一。无论是 Web 应用、移动应用还是桌面应用,几乎都需要与数据库交互以存储和检索数据。Java 提供了一种强大的方式来实现与数据库的交互,即 JDBC(Java 数据库连接)。本文将深入探讨 JDBC 的各个方面,从基本概念到实际编程示例

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包