连接查询之外连接(左外链接和右外连接)

news2025/1/18 3:27:12

内连接:

       假设A表和B表进行连接查询,使用内连接的话,凡是A表和B表能够匹配上的记录被查询出来,这就是内连接。A、B两张表没有主副之分,两张表是平等的

外连接:

       假设A表和B表进行连接查询,使用外连接的话,A、B两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表内容,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。

外连接的分类?

        左外连接(也称左连接):表示左边的这张表是主表。

        右外连接(也称右连接):表示右边的这张表是主表。

        左连接有右连接的写法,右连接也会有对应的左连接的写法。

案例:

        需求:找出每个员工的上级领导?(要求显示出所有员工姓名。)

        分析:我们在自连接中查出了13条记录,显然不符合本需求,因为本需求需要显示所有员工,为此应该显示14条记录所以此处我们应该使用外连接进行查询

        SQL:(左连接)

        select

                a.ename as '员工名称',b.ename as '领导姓名'                         #这里的as可以省略

        from

                emp a                                                                                       #这里省略了as

        left outer join   #这里的outer 表示外连接,可以省略,left表示左连接,

                emp b                                                                                       #这里也省略了as

        on

                a.mgr = b.empno;

                ​​​​​​​         

将上面的左连接写成右连接的形式如下:

SQL:(右连接)

select

a.ename '员工姓名',b.ename '领导姓名'        #这里省略了as

from

emp b                                                                      #这里也省略了as

right join                                                                         #这里的省略了outer

emp a                                                                       #这里省略了as

on

a.mgr = b.empno;

        ​​​​​​​        ​​​​​​​        

无论是左连接还是右连接显示的查询结果一样。

外连接最重要的特点是:主表的数据无条件的全部查询出来。

如何区分外连接和内连接:join前面是否有leftright,有其中任意一个就是外连接,一个都没有就是内连接。

在实际开发中外连接使用较多。

【外连接的查询结果条数一定是大于等于内连接的查询结果条数(正确)】

案例:查询没有员工的部门信息

试着写一条SQL语句,查询出emp表所有信息和dept表所有信息,采用外连接dept是主表没有员工的部门信息也能显示

        select

                e.*, d.*

        from

                emp e

        right join

                dept d

        on

                e.deptno = d.deptno;

分析查询结果我们只需要最后一条信息,所以还需要增加条件语句,对上面的SQL语句进行修改。

        select

                e.*, d.*

        from

                emp e

        right join

                dept d

        on

                e.deptno = d.deptno

        where

                e.ename is null;

观察查询结果,我们对前面的内容也是不需要的,所以继续对上面的SQL语句进行修改

        select

                d.deptno,d.dname,d.loc

        from

                emp e

        right join

                dept d

        on

                e.deptno = d.deptno

        where

                e.ename is null;

        ​​​​​​​        ​​​​​​​        ​​​​​​​

这才是我们需要的结果。

[注意:很多查询语句我们不可能一子就从头到尾完整的写出来,需要将需求进行分解,每次完成一部分,通过不断调试,最后才能写出完整的查询语句。]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对于html中div标签height属性的个人理解

对于没有系统学习过css的程序员来说,在编写css样式的时候,div的height属性值确实是个玄学的东西,我也感觉css确实挺玄学的,本文将介绍我对div标签height属性的个人理解,如有问题请指正。 在html中,div标签属…

xilinx srio ip学习笔记之srio example

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之srio example前言IP的配置例程前言 前面对SRIO的理论有了初步的理解,现在急需要通过理解例程并且修改例程来建立自信心了。 学东西确实…

Java版本TransH代码的学习

主要讲和TransE代码的区别,TransE文章的链接 Java版本TransE代码的学习 关于范数的概念 什么是0范数、1范数、2范数?区别又是什么 初始化向量 初始化关系平面的向量Wr,初始化向量relation_vec,初始化节点向量entity_vec Wr_vec new doub…

富豪酒店集团全新体验「METAGREEN」上线!边玩边赚,了解可持续发展!

富豪酒店集团推出 MetaGreen 以提高大众对可持续发展的认识,并创造一个多元化的绿色生态系统。 体验将包涵盖数个独特的互动地标,包括环保富豪酒店、大华银行艺术空间、恒生银行元宇宙分行,以及 citysuper、LOG-ON 和 The Mills 等零售商。 …

擎创技术流 | ClickHouse实用工具—ckman教程(9)

哈喽~大家好,时间倏然,上一次ckman分享还是在2022,这一期分享就已经是2023了。由于前段时间小编“成功加入羊群”,导致拖更一周,实在抱歉。希望新的一年大家都可以身体健健康康,事业红红火火,生…

Clarifying Question领域最常见的三个数据集

文章目录Qulacqulac.json:qulac_hist012_dict.tar.gz:MIMICSClariQConvAI3 Data ChallengeStage1: initial datasetStage2: human-in-the-loopClariQ DatasetFile Formattrain.tsv and dev.tsvtest.tsvquestion_bank.tsvdev_synthetic.pkl.tar.gz & train_synthetic.pkl.ta…

【进阶】Spring核心思想及其项目创建

努力经营当下,直至未来明朗! 文章目录一、Spring核心思想1. 容器2. IoC3. SpringIoC4. DI概念说明二、Spring的创建和使用1. 创建Spring项目3. Maven项目导入jar包和设置国内源的方法:2. Spring对象的存储/存储Bean对象3. 从Spring中读取到Be…

Electron自定义协议Protocol对web网站做数据交互,使用SSE实时数据推送到网站

(防盗镇楼)本文地址:https://blog.csdn.net/cbaili/article/details/128651549 前言 最近在撸VUE,想要实现一份代码既能构建Web又能构建Electron应用 并且能够判断环境是浏览器还是Electron,随后在Electron中做一些特定的事情 以往的Electron通信依靠IPC通信完成,但是发布到…

模板(template)包含与继承

Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表&#x…

超详细的Socket通信原理和实例讲解

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…

【算法篇-排序】八大排序

十大排序0.常见排序1. 插入排序(直接插入排序和希尔排序)1.1直接插入排序1.2希尔排序(缩小增量排序)2.选择排序2.1选择排序2. 2堆排序3.交换排序3.1 冒泡排序3.2快速排序3.2.1hoare版本快排3.2.2挖坑法3.2.3前后指针法3.3.4 快排的…

【Linux】在Linux上写一个进度条小程序

👑作者主页:安 度 因 🏠学习社区:安度因的学习社区 📖专栏链接:Linux 文章目录一、前言二、理解 \r 与 \n三、行缓冲1、提出问题2、认识行缓冲3、解答与拓展4、倒计时四、进度条五、结语如果无聊的话&#…

2023/1/12总结

今天学习了图的割点与桥的算法 图的割点以及桥 图的割点:割点是指在无向连通图中,某点和该点连接的边去掉以后图便不再连通 在上面的图片中(上面是一个有向图,我们当作无向图即可)我们知道当我们去掉A点之后&#xf…

进阶必看 | 6个让Revit建模起飞的习惯,高效就靠它

大家好,这里是建模助手。 相信各位都知道,建模助手一向以来都追求更高,更快,更强。但是有些问题,不是插件本身能解决的事情,而是项目本身的问题。 一般来说,当Revit项目模型大于150MB时&#…

Linux安装sonarqube(含各种错误处理)

目录 1.下载安装 2.错误处理 2.1.JDK版本不适配 2.2.can not run elasticsearch as root 1.下载安装 下载地址: Download | SonarQube | Sonar (下载页面向下拉)选择稳定版本下载。 解压后启动脚本在: bin/{对应操作系统}…

【dp】买卖股票的最佳时机系列题目

文章目录121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II309. 最佳买卖股票时机含冷冻期123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV121. 买卖股票的最佳时机 本题的重点是:只能在前面某一天买入,后面某一天卖出。要不就是不买入&#x…

外贸业务员怎样能提高自己的工作能力?

关于外贸业务员提高自己的工作能力,米贸搜整理如下,希望可以帮助到你:1.树立一个好的目标,并坚定不移地朝着这个目标努力。这个问题,无论你是新手还是有经验的外贸业务员,相信每个外贸业务员都或多或少的思…

K_A11_004 基于STM32等单片机采集热敏传感参数串口与OLED0.96双显示

K_A11_004 基于STM32等单片机采集热敏传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线说明1.1、STC89C52RC热敏传感模块1.2、STM32F103C8T6热敏传感模块五、基础知识学习与相关资料下…

NCS8823替代方案|CS5260Typec转VGA可替代NCS8823|低BOM成本替代NCS8823设计

NCS8823替代方案|CS5260Typec转VGA可替代NCS8823|低BOM成本替代NCS8823设计 NCS8823是一款低功耗、DisplayPort信号至VGA转换器,通过USB Type-C连接器。它是 适用于USB Type-C至VGA转换器,适配器、对接设备。此设备结合了基于USB Type-C的 DisplayPort接收器和VGA…

华为私有云平台FusionCompute搭建

一、FusionCompute架构 架构CNA作为虚拟化操作系统,VRM作为虚拟化管理平台正常主机都安装CNA,单独建立VRM集群作为管理集群,我测试环境就一台主机,所以CNA和VRM装在同一台主机上,并且用这台主机分配虚拟机进行测试。 …