外连接 (outer join)

外连接 (outer join)
Ø 左外连结 (left outer join)
Ø 右外连结 (right outer join)
Ø 全外连结 (full join)
内连接与外连接的区别
Ø 内连接操作在表关系的笛卡尔积中去掉了不匹配的数据记录,只输出满足连接条件的数据记录。
Ø在连接语句中只写join,而不写是哪类连接时,默认是内连接(inner join
Ø 外连接操作是生成笛卡尔积后,在其中按照on连接条件进行数据匹配,以指定表为连接主体,将其中不满足连接条件的记录也保留,对无法匹配的内容用null值填充,一并输出。

内连接的查询结果仅包含符合连接条件的行。如果需要查询结果不仅包含符合连接条件的行,而且还包括左表、右表或两个连接表中的所有数据行,则应该使用外连接。
MySQL支持的外连接有两种类型:
左外连接(左连接 LEFT [OUTER] JOIN)右外连接(右连接 RIGHT [OUTER] JOIN)
MySQL不能直接支持FULL JOIN,要实现FULL JOIN,应该使用 LEFT JOIN UNION RIGHT JOIN 的方式来实现。

一、左连接(LEFT OUTER JOIN)
左连接的查询结果为左表的所有记录以及右表中连接字段相等的记录。执行匹配条件时,以关键字的左边的表为参考表,即相当于将其作为主表。如果左表的某行在右表中没有匹配行,则在相关联的结果行中,右表的所有选择列对应值均为空值(NULL)。
语法形式为:
SELECT tableA.字段列表, tableB.字段列表 FROM tableA LEFT [OUTER] JOIN tableB
ON tableA.连接字段=tableB.连接字段
左连接的主表为左表,即LEFT JOIN左边的表tableA,将会保留主表中的所有记录。

二、右连接(RIGHT OUTER JOIN)
右连接是左连接的反向连接,查询结果为右表中的所有记录以及左表中连接字段相等的记录。执行匹配条件时,以关键字的右边的表为参考表,即相当于将其作为主表。如果右表的某行在左表中没有匹配行,左表的选择列对应值将返回空值(NULL)。
语法形式为:
SELECT tableA.字段列表, tableB.字段列表 FROM tableA RIGHT [OUTER] JOIN tableB
ON tableA.连接字段= tableB.连接字段

注:
右连接主表为右表,RIGHT JOIN右边的表tableB,连接后将会保留主表tableB中的所有记录。
tableA RIGHT JOIN tableB与 tableB left JOIN tableA 是等价,其中 tableB 都是主表,连接后tableB中的所有记录都将会保留。

说明
1.在内连接操作中指定的过滤条件写在on子句中和where子句中没有任何区别。故where过滤条件可以与on合并,都写到on子句中。
2.而在外连接中不能将where过滤条件合并到on子句中.否则返回的结果可能与事实不符.
3.如果on子句中的条件的列是同名的列,可写为using( 列名).如“on a.学号=b.学号”可写为“using(学号)”.
4.在内连接操作中可以省略on子句,结果变为cross join的结果。而外连接中的on子句不可省略,否则会提示 SQL 语句错误。

三、复合连接条件查询计算差集
复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,也就加WHERE条件。也可以利用表的外查询操作, 返回在第一个表中但不在第二个表中的记录。相当于做两个表的except操作,即求两个集合的差集。

四、完全连接(FULL JOIN)
完全连接返回左表和右表中的所有记录,包括连接字段相等的记 录和不相等的记录。如果左表的某行在右表中没有匹配行,将返回 空值(NULL),反之亦然。
SELECT tableA.select_list, tableB.select_list FROM tableA LEFT [OUTER] JOIN tableB
ON tableA.Key = tableB.Key
UNION
SELECT tableA.select_list, tableB.select_list FROM tableA RIGHT [OUTER] JOIN tableB
ON tableA.Key =tableB.Key

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

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

相关文章

打破信息差,计算机专业必须知道的进大厂的方式

现在的信息茧房有多可怕,如果你提前知道这几个进大厂实习的方法,你将超越百分之九十的大学生。 一、高校就业指导中心 大学生们找实习可以从本校高校就业指导中心网站上找,这个渠道建议重点关注下,此类渠道推荐的实习机会&#…

B2B2C电商系统源代码部署,让你轻松开启网店生意

在当今数字化时代,开设一家网店已经变得异常简单。借助B2B2C电商系统源代码部署,你可以轻松搭建自己的在线商城,开始网店生意。这种系统为企业提供了一个强大的平台,让他们可以直接与制造商和消费者进行交易,从而实现品…

AcWing16. 替换空格

题目 请实现一个函数,把字符串中的每个空格替换成"%20"。 数据范围 0≤0≤ 输入字符串的长度 ≤1000≤1000。 注意输出字符串的长度可能大于 10001000。 样例 输入:"We are happy."输出:"We%20are%20hap…

ETL的数据挖掘方式

ETL的基本概念 数据抽取(Extraction):从不同源头系统中获取所需数据的步骤。比如从mysql中拿取数据就是一种简单的抽取动作,从API接口拿取数据也是。 数据转换(Transformation):清洗、整合和转…

WebGL开发数字孪生系统

使用WebGL开发数字孪生系统通常涉及以下步骤。WebGL是一种用于在浏览器中实现3D图形渲染的JavaScript API,它可以用于创建交互性强、高度可视化的数字孪生系统。 1.需求分析: 确定数字孪生系统的目标和用途。明确系统的功能需求、用户需求以及与物理实体…

高性能服务系列【六】网络的有效载荷

谈到高性能服务是很难绕开网络部分,毕竟单机时代早已过去。对于多节点构成的服务系统,要提高总体性能,除了单节点足够强悍外,节点之间的通讯代价是必须考虑的关键。我们在刚开始的章节,就谈到网卡和磁盘是挂接在低速南…

Java项目:46 ssm005基于SSM框架的购物商城系统+jsp(含文档)

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 项目是单体ssm电商水果平台,包括前台商城平台及后台管理系统 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流…

连接端口和连接端口转换OrCAD补丁

来介绍此功能之前先复习一下一些OrCAD的基础知识。 说到连通两个器件,有什么办法呢?最直接的就是用线连通。比如下面这两个器件需要连通,我们可以直接用线Place wire连接。 但是如果这两个器件由于某些原因,他们之间相隔很远&…

c# 使用 Oxyplot 创建和绘制 ContourSeries

我有一个 WPF 应用程序,我需要在其中可视化 y y(x1, x2),其中 x1、x2 是线性坐标。我可以使用 Oxyplot 中的 HeatMapSeries 来做到这一点,但是当我想在同一窗口中绘制两组数据时,热图不是合适的工具。几个轮廓系列会更好。 现在&…

MS5583N高分辨率模数转换器

产品简述 MS5583N 是一款高分辨率模数转换器,内部集 成高阶 Σ-Δ 调制器、低噪声可编程增益放大器、多 路输入选择器和多种内部数字滤波器。其转换速率 从 250SPS 到 4kSPS 。此外,芯片内部集成失调校准 寄存器和增益校准寄存器。 MS5583N …

题目 2113: T1309-回文数

题目描述: 若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如&…

haproxy-高性能负载均衡反向代理服务

目录 一、HAProxy(High Availability Proxy)概述 1、HAProxy的概念 2、HAProxy的主要特性 3、HAProxy的优缺点 4、Haproxy负载均衡策略 5、LVS、nginx、HAProxy的区别 二、安装HAProxy 1、yum安装 2、第三方rpm包安装 3、编译安装 3.1 解决 l…

流量分析-webshell管理工具

文章目录 CSCS的工作原理CS流量特征 菜刀phpJSPASP 蚁剑冰蝎哥斯拉 对于常见的webshell管理工具有中国菜刀,蚁剑,冰蝎,哥斯拉。同时还有渗透工具cobaltstrike(CS)。 CS CobaltStrike有控制端,被控端,服务端。(相当于黑…

day52 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

考虑到一般动态规划的写法是n方,为了降低复杂度,考虑每次假如选择当前数dp[i]对应最长的序列,就找前面上一个数(已经做递推的时候记录了上一个数的比他小的一个数,因为等于上一个比他小的数的序列长度(已经…

寻找峰值(二分查找思想)

解法一&#xff1a;暴力求解 int findPeakElement(int* nums, int numsLen ) {// write code herefor (int i 1; i < numsLen - 1; i) {if ((nums[i] > nums[i - 1]) && (nums[i] > nums[i1])) {return i;}}if (nums[numsLen - 1] > nums[numsLen - 2]) …

ubuntu docker-compose 编排容器并且设置自启动

安装docker-compose sudo apt install docker-compose编写docker-compose.yml 这是我的docker-compose,里面写了5个容器&#xff0c;一个sqlserver的db&#xff0c;一个airlfow&#xff0c;一个我的主项目&#xff0c;会根据里面规定好的启动顺序启动。 version: "3.7&…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

鸿蒙开发为什么这么火,现在入行鸿蒙是否来的及?

鸿蒙开发是当前备受关注的技术领域之一&#xff0c;对于想要入门学习鸿蒙开发的初学者来说&#xff0c;需要掌握一定的基础知识和技能。鸿蒙开发又是否能为程序员们带来一片光明的未来呢&#xff1f;让我们一同探讨这些问题。 对于初学者来说&#xff0c;鸿蒙开发是否易于上手呢…

MySQL基础-----多表关系与查询概述

目录 前言 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.概述 2.笛卡尔积 3.分类 前言 本期我们开始学习新的章节&#xff0c;也就是MySQL的多表关系与查询&#xff0c;在本期主要是讲述概念性的东西&#xff0c;大概介绍多表关系是什么&#xff0c;为什…

洛谷 P1706 全排列问题

题目描述 按照字典序输出自然数 11 到 nn 所有不重复的排列&#xff0c;即 nn 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 nn。 输出格式 由 1 \sim n1∼n 组成的所有不重复的数字序列&#xff0c;每行一个序列。 每个数字…