数据库学习之MySQL (十六)—— SQL99 外连接 左外连接 右外连接 全外连接 交叉连接

article/2025/10/6 11:53:39

文章目录

    • 外连接 之 左外连接 与 右外连接
    • 为啥要用外连接
    • 全外连接
    • 总结 内连接 外连接
    • 交叉连接

外连接 之 左外连接 与 右外连接

我们先来看个之前的 女神男朋友的案例
传送:数据库学习之MySQL (十三)——多表查询 SQL92 SQL99 连接种类划分
在这里插入图片描述
在这里插入图片描述
我们先考虑一一映射的情况 也就是男女不会脚踏多条船 而是一对一的
那么 之前说了 我们以女神为主
以女生的信息为主表 会有12行 因为有12个女生实例 匹配不到男生的就空着
在这里插入图片描述
以男生为主 以男生的信息为主表 则明显 只会有4个男生对象实例
在这里插入图片描述
这里,因为没有一一映射 (张有三个女朋友) 导致多了两行 但实际上是以男生为主表

那么 以······为主 代码上怎么实现呢?
我这里放第一个 女神为主表的实现代码:

USE data1;
SELECT a.`id` AS 女神id,a.`name` AS 女神名字,a.`phone` AS 女神电话,a.`boyfriend_id` AS 男朋友id,b.`boyName` AS 男朋友名字 
FROM beauty AS a
LEFT JOIN boys AS bON a.`boyfriend_id` = b.`id`;

LEFT 关键字尤为重要 全称为LEFT OUTER 左外连接 可以省略outer

或者我这么写

FROM beauty AS a LEFT JOIN boys AS b

懂了吧?left 左边为主表 所以是左外连接

那么 我这么写呢?

USE data1;
SELECT a.`id` AS 女神id,a.`name` AS 女神名字,a.`phone` AS 女神电话,a.`boyfriend_id` AS 男朋友id,b.`boyName` AS 男朋友名字 
FROM  boys AS b
RIGHT JOIN beauty AS aON a.`boyfriend_id` = b.`id`;

答案是一样的

所以用的时候 左右连接 选一个就OK 一个道理而已

为啥要用外连接

我们看过十三节 其实用内连接的 等值连接 人家很智能的会把匹配不到的给去掉
现在我们把匹配不到的给弄出来的岂不是画蛇添足?

其实不然
比如我还看到别的信息呢?也就是女神我一定要看 有没有男朋友我不是很在意 那就需要全表

基于全表 我们再怎么筛选也不会漏数据(漏女神)

全外连接

所谓全外 就是左外+右外
啥意思?两个表都是主表
那么 两个表的所有实例都会表现出来 无论是否匹配得到
那么按照之前

名称关键词主表实例
左外LEFT女神为主表12个实例女神
右外RIGHT男神为主表4个实例男神
全外FULL两个都是主表16个实例神
USE data2;
SELECT b.`id` AS 男神id,b.`boyName` AS 男神名字,b.`userCP` AS 男神指数,a.`id` AS 女神id,a.`name` AS 女朋友名字 
FROM beauty AS a
FULL JOIN boys AS b
ON a.`boyfriend_id` = b.`id`;

在这里插入图片描述
不过 MySQL 支持 全连接 其他的都OK 这里就不测试了 代码可以在支持的SQL引擎中实现:

总结 内连接 外连接

我拿男神女神匹配这个案例来说
男神是女神的真子集 也就是匹配完 女生还有圣女 男生全都抱得美人归了

名称关键词结果数学表达实例
内连接INNER互相都能匹配得到的交集4个实例CP神
左外连接RIGHT左边的女神实例保留 其他尽量匹配 匹配不到为NULL女神集4个实例男神
右外连接FULL右边的男神实例保留 其他尽量匹配 匹配不到为NULL男神集16个实例神
全外连接FULL左右神的实例都保留 匹配不到就为NULL全集16个实例神

这个是结合代码的示意图 看看能否理解:
在这里插入图片描述

交叉连接

还记得我们之前的那个 笛卡尔乘积 问题嘛
传送:数据库学习之MySQL (十三)——多表查询 SQL92 SQL99 连接种类划分

其实就好像数学考试的握手游戏
这里 每个人(男神或者女神)都必须要和其他所有异性匹配 成一行实例输出

我们当时没用多表查询 瞎搞出来的代码,出来了这样的效果
在这里插入图片描述
其实 交叉连接就是得到这样的结果
这两段代码是等效
意思 不用INNER OUTER限定 默认就是交叉连接

#1  错误写法
SELECT * FROM `beauty`,`boys`  #2  SQL99 交叉连接写法
SELECT a.*,b.* 
FROM`beauty` AS a,`boys` AS b 
CROSS JOIN `boys` ;

下一站:数据库学习之MySQL (十七)—— SQL99 主查询与子查询 子查询分类之WHERE的子查询

  • 本文专栏
    MySQL专栏
  • 我的其他专栏 希望能够帮到你 ( •̀ ω •́ )✧
    • 手把手带你学后端(服务端)
    • python这么火 想要深入学习python 玩一下简单的应用嘛?
      python应用
  • 谢谢大佬支持! 萌新有礼了:)

http://chatgpt.dhexx.cn/article/HdZDbklv.shtml

相关文章

ORACLE的左右连接,全外连接

先上概念 oracle连接分为: 左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。 右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配…

SQL的内连接、左连接、右连接、 交叉连接、全外连接

sql表连接分成 外连接 、 内连接 和 交叉连接。. 外连接包括三种,分别是左外连接、右外连接、全外连接。. 对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。. 在左、右外连接中都会以一种表为基表,基表的所有行、…

Mysql中实现全外连接

MySql中多表查询只提供了内连接,左外连接与右外连接: table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr 1】INNER JOIN ON内连接(只写join时默认为内连接) SELECT * FROM emp e…

mysql 全外连接报错的原因

mysql 不支持 直接写full outer join 或者 full join来表示全外连接但是可以用left right union right 代替。 全外连接图(非原创图) 下面的是全外连接例子: select * from table a A(A为别名)LEFT JOIN table b B …

Oracle:左连接、右连接、全外连接、(+)号详解

目录 Oracle 左连接、右连接、全外连接、()号详解 1、左外连接(LEFT OUTER JOIN/ LEFT JOIN) 2、右外连接(RIGHT OUTER JOIN/RIGHT JOIN) 3、全外连接(FULL OUTER JOIN/FULL JOIN&#xff0…

全外连接给你讲

你知道的越多,你不知道的就越多 先来看看标准SQL里面定义的外连接的三种类型: 左外连接右外连接全外连接 其中,左外连接和右外连接没有本质的区别,用作主表的表写在运算符左侧就是左外连接,卸载运算符右侧就是右外连接…

SegmentFault 技术周刊 Vol.30 - 学习 Python 来做一些神奇好玩的事情吧

前言 开始之前,我们先来看这样一个提问: python初学者,请教python学习路径 相信看完 X_AirDu 的回答我们已经对 Python 有了一个大概的了解。那接下来就让我们更深入的了解 Python 吧~ Python 入门 [零基础学Python]一些关于Python的事情 已经…

产品读书《金字塔原理》

PPT参考 1PPT参考2 其实我读这本书并不是把它当作一本读物来读,反倒觉得像是一本工具书,全书的内容可能干货不多,总结出来就是“金字塔”,倒没什么其他,再多也就是一些案例!但是这个思想已经能让人俯首称赞…

转载-代码的马斯洛金字塔

从科技爱好者周刊(第 156 期):显卡缺货与异业竞争看到的关于代码的马斯洛金字塔这种说法;搬运过来方便自己随时阅读; 原文是代码的马斯洛金字塔; 内容如下: As in Maslow’s pyramid, each laye…

需求挖掘:产品经理怎么基于项目做需求挖掘

零、需求分析的背景 日常工作中,我们常常面临别人提过来的需求要不要做,如何去挖掘新的需求、衡量需求的投入产出比等相应的场景,这些场景都涉及到我们对需求的分析和挖掘,也就意味着我们需要掌握足够多的认知和方法论去对指定的需…

如何思考总结,并如何写文档展示. 结构化思考, 金字塔思维

先看三张图: 术语: 交叉表, 是人分类能力提升的一个标志. (对问题思考可以分类到多个维度,并了解维度之间的层级关系,哪个更主要,哪个是次要) 该图的是最简单的整理表格. 进一步复杂的在数据分析上有专门的术语: 叫做交叉表 找不到了 1.上线前 道: 法(制度): 术…

程序员应了解:知识技能金字塔

这是我的开篇文章!! 如今计算机非常火热,尤其是程序员(软件开发)更是大众眼中高工资的代表。 而新的编程语言和技术框架等更新迭代速度可以说是360行中最快之一,一般来说程序员知识半衰期是五年&#xff0…

需求

什么是需求 定义 需求是满足某类用户的某种欲望或解决某些问题时所产生的现象。工具类App的出现就是为了解决用户的某些问题。比如印象笔记,解决了用户记录事物,并整理笔记的需求;番茄todo解决拖延症人群效率低下,办事无条理的问题…

经济学金字塔

2.9.3.1 经济学金字塔 此章节我们将根据广义动量定理与系统思考建立起经济学金字塔的模型。经济学金字塔包含4个层级的均衡。第一层级是两个单一市场的均衡,分别为商品市场的均衡和货币市场的均衡。第二层级是两市场的均衡,即商品市场和货币市场共同达到…

【博学谷学习记录】超强总结,用心分享|产品经理需求分析方法简析

为什么要进行需求分析? 作为产品经理,每天要接触到大大小小不同的需求,在面对需求时,需要进行有效的需求分析,才能更好地了解问题,从而制定相应的解决方案,就是通过用户的问题,找到…

29. 人类将如何变革--走出金字塔模型(上)

作者 | Harper 审核 | gongyouliu 编辑 | auroral-L 人工智能,将改变全世界各行各业的现有工作方式,商业模式以及相关的经济结构,那么人类应该如何应对呢?最最基本的一点,当人工智能开始大规模取代人类工作者的时候&am…

基于空间金字塔网络的光流估计

Optical Flow Estimation using a Spatial Pyramid Network 我们学习通过结合经典的空间金字塔公式和深度学习来计算光流。通过当前流量估计和计算流量更新,在每个金字塔级别扭曲一对图像,通过从粗到细的方法估计大型运动。我们不是在每个金字塔层上对目…

《金字塔原理》读书笔记

0 前言 《金字塔原理》基本是每一位职场人的必修书目,在实习期间也是leader和师兄的强力推荐,在工作的软能力上提升自己。”想清楚,说明白,知道说什么、怎么说“,是我们希望达到的境界。我们在与人沟通时,需…

《腾讯数字生活报告2019》发布,互联网时代新马斯洛需求金字塔预示什么?

来源:腾讯研究院 5月22日,腾讯研究院、腾讯应用宝、腾讯开放平台联合出品的《腾讯数字生活报告2019》在腾讯全球数字生态大会应用生态主题论坛上发布,报告从生存、关系、发展三个层级解读了大众数字生活版图中的新趋势及核心洞察。透过这份数…

产品能力提升|《金字塔原理》

「金字塔原理」芭芭拉明托 2021/3/28 我们希望达到的境界:想清楚,说明白,知道说什么、怎么说。所以在和人沟通的时候需要明确三件事:谁是我的听众、他们想听什么、他们想怎样听。 金字塔原理的基本概念 金字塔原理是一种重点突出…