图解左连接、右连接、内连接、全连接(小白入门)

news2024/11/14 22:47:39

目录

  • 一、七种连接情况
  • 二、左连接
    • 具体例子:力扣数据库题目 175. 组合两个表
      • 答案
      • 1. 连接条件为:on Person.PersonId = Address.personId
      • 2. 连接条件为:on Person.PersonId != Address.personId
  • 三、左连接不包含内连接
  • 四、右连接
  • 五、右连接不包含内连接
  • 五、内连接
  • 六、全连接
  • 七、全连接不包括内连接
  • 参考资料

一、七种连接情况

二、左连接

左连接(left join)全名是左外连接(left outer join),左连接会返回左边表中的每一条记录(即每一行数据)。注意:并不是说每一个数据哦,这还得看SELECT选择了哪些字段。

SELECT <select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key
  • SELECT是表示要返回的选择的字段(即返回哪一列列);
  • FORM 是表示从哪一个表中选,这里左连接会形成一个临时表,从临时表中选;
  • TableA A也可以写成 TableA as A,也就是给TableA起了个别名叫a,这里起别名是为了后面能够简写,也就可以不用写成ON TableA.A = TableB.B
  • LEFT JOIN表示将TableATableB合并成一个临时表on表示连接的条件,这里ON A.Key = B.Key表示将两个表中Key相等的记录进行连接,Key不相等的记录在生成临时表的时候,左表记录保留,右表剩余的位置就用null填充。

具体例子:力扣数据库题目 175. 组合两个表

链接:https://leetcode.cn/problems/combine-two-tables/description/

请添加图片描述
请添加图片描述

答案

select firstName, lastName, city, state
from Person p left join Address a
on p.Personid = a.Personid
  • on是在生成临时表时的连接条件,如果左右表符合这个条件,就会直接连接,如果不符合这个条件,右表就会将不符合条件的记录填充为null。但无论如何,最后都是会返回左表中的记录,右表如果符合条件,就会显示相应的数据,如果不符合条件,就会显示null
  • where后面的条件是生成临时表后,去进行过滤的,不符合where条件的,就会被过滤掉。
  • Person表有2行,Address表有2行,2 x 2 = 4,一共可以组成4行,4种情况。

1. 连接条件为:on Person.PersonId = Address.personId

  • 这个连接条件表示将两个表中personId相等的记录连接起来,其余的则保留左表,右表剩余的位置用null填充。

请添加图片描述

2. 连接条件为:on Person.PersonId != Address.personId

这个连接条件表示将两个表中personId不相等的记录连接起来,其余的则保留左表,右表剩余的位置用null填充。

三、左连接不包含内连接

SELECT <select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key
WHERE B.KEY IS NULL

这里B.Key要求为null就是要让左连接得到的临时表中没有B的部分。

四、右连接

右连接跟左连接类似。

SELECT <select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key

五、右连接不包含内连接

SELECT <select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL

五、内连接

SELECT <select_list>
FROM TableA A 
INNER  JOIN TableB B
ON A.key = B.key

六、全连接

SELECT <select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Key = B.Key

七、全连接不包括内连接

SELECT <select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL
OR B.Key IS NULL

参考资料

  1. 图解:史上最详细之数据库左连接、右连接、内连接、全连接!
  2. 图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了
  3. left join中 限制条件在on和where区别

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

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

相关文章

利用腾讯云函数隐藏C2服务器

1、简介 腾讯云函数&#xff0c;可以为企业和开发者提供无服务器执行环境&#xff0c;无需购买和管理服务器&#xff0c;只需要在腾讯云上使用平台支持的语言编写核心代码并设置代码运行的条件&#xff0c;即可在腾讯云基础设施上弹性 安全地运行代码。 C2服务器所有流量通过腾…

CSS入门(网络安全方向)——id与class

CSS (Cascading Style Sheets&#xff0c;层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档&#xff08;如 HTML 文档或 XML 应用&#xff09;添加样式&#xff08;字体、间距和颜色等&#xff09;的计算机语言&#xff0c;CSS 文件扩展名为 .css。 通过使用 CSS 我…

Python电商数据分析系列-薪资预测

Python电商数据分析系列-薪资预测 学习目标&#xff1a; 快速掌握简单且常用的数据分析任务 自己实现预测简单预测任务 学习内容&#xff1a; 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习对象 想快速入门的本科生转行人员想学习新技能&#xff0c…

【Python】遇到 from PIL import Image 报错怎么办?

嗨害大家好鸭&#xff01;我是小熊猫~ 很久之前有一个辛苦的小程序员 它在做验证码识别的的时候 遇上了一个小小的错误沙堆 经过它一点也不辛苦的努力&#xff0c;解决了它 于是它决定把这个宝贵的经历分享给大家~ 问题的出现&#xff1a; 前方出现红色波浪线 开始感到有一…

基于风险的测试

测试级别划分 测试级别的划分能对应解决软件开发的复杂性问题。将一个大规模复杂的系统分解&#xff0c;从小的模块开始&#xff08;单元测试&#xff09;&#xff0c;逐步放大到整个系统级别。 测试类型的设计和安排&#xff0c;将测试类型安排在最适合对应的测试级别中来识别…

精准医疗、空间组学、细胞图谱,腾讯AI Lab用深度学习助力生命科学研究

近日&#xff0c;腾讯 AI Lab 三项研究分别入选国际顶级学术期刊 Nature Methods 和 Nature Communications&#xff0c;再次展示了在生命科学前沿领域上国际领先的技术实力。 这三项研究成果都属于生物细胞研究中的空间组学技术&#xff0c;对于推动精准医疗、细胞图谱绘制、人…

lua自动回收机制gc的理解

gc主要回收哪些垃圾&#xff1f; 在 Lua 中&#xff0c;垃圾回收&#xff08;garbage collection&#xff0c;简称 GC&#xff09;机制主要用于回收动态分配的内存和关闭未关闭的文件句柄。具体来说&#xff0c;Lua 的 GC 机制主要用于回收以下类型的垃圾&#xff1a; 对象&am…

力扣日记剑指 Offer II 003

1. 题目 LeetCode 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 1.1 题意 计算 0 到 n 之间的每个数的二进制表示中 1 的个数 1.2 分析 看时间复杂度&#xff0c;O(32n)应该能过&#xff08;也就是每个数一位一位去数1的个数&#xff09;&#xff0c;知道low-bit这个运…

插入排序代码

时间复杂度O&#xff08;n&#xff09;

开源中文医疗大模型

中文医疗大模型 中文医疗大模型是指通过利用自然语言处理技术和机器学习算法&#xff0c;在大量的医疗文本数据中预训练出来的模型。它可以实现对医疗信息的分类、摘要、问答系统、机器翻译等功能&#xff0c;是医疗行业中的重要工具。在医疗领域中&#xff0c;大规模语言模型&…

答应我,不会回答这五个问题,不要去面试好吗?

1、创建坐席组的功能模块&#xff0c;如何进行测试用例设计&#xff1f; 解答&#xff1a; 功能测试&#xff0c;使用等价类划分法去分析创建坐席的每个输入项的有效及无效类&#xff0c;同步考虑边界值去设计对应的测试用例&#xff1a; 先进行冒烟测试&#xff0c;正常创建…

CSS基础学习--17 布局 - 水平 垂直对齐

一、元素居中对齐 要水平居中对齐一个元素(如 <div>), 可以使用 margin: auto;。设置到元素的宽度将防止它溢出到容器的边缘。元素通过指定宽度&#xff0c;并将两边的空外边距平均分配&#xff1a; <!DOCTYPE html> <html> <head> <meta charset&q…

关于sub-gaussian 和 sub-exponential随机变量的集中不等式

Concentration inequalities under sub-Gaussian and sub-exponential conditions sub-guassian范数和sub-exponential范数&#xff1a; 如果 f k ( X ) f_{k}(X) fk​(X)为sub-gaussian随机变量&#xff0c;则有如下的定理&#xff1a; 应用&#xff1a; 1.向量值集中 2.…

Apache Doris 冷热分层技术如何实现存储成本降低 70%?|新版本特性

在数据分析的实际场景中&#xff0c;冷热数据往往面临着不同的查询频次及响应速度要求。例如在电商订单场景中&#xff0c;用户经常访问近 6 个月的订单&#xff0c;时间较久远的订单访问次数非常少&#xff1b;在行为分析场景中&#xff0c;需支持近期流量数据的高频查询且时效…

mysql索引优化系列(一)

一、不常见的索引失效场景 1、举例 还是之前的member会员记录表&#xff0c;往里面插入十万条数据 drop procedure if exists insert_emp; CREATE PROCEDURE insert_emp () BEGINDECLAREi INT;SET i 1;WHILE( i < 100000 ) DOINSERT INTO member ( NAME, age, address, …

【LeetCode热题100】打卡第24天:单词搜索

文章目录 单词搜索⛅前言&#x1f512;题目&#x1f511;题解 单词搜索 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数…

使用花生壳进行内网穿透实验SQLServer

使用的是体验版&#xff0c;进行实验足够了 &#xff08;1&#xff09;输入花生壳帐号密码登录花生壳管理平台&#xff0c;在【内网穿透】界面点击添加映射&#xff1b; &#xff08;2&#xff09;接着需要填写映射ERP服务器的相关内容&#xff1a;①应用类型&#xff1a;ERP系…

【论文系列解读】StableDiff总结

1. diffusion (0) 总结 可以参考此处&#xff1a;https://blog.csdn.net/weixin_40920183/article/details/130652651 https://zhuanlan.zhihu.com/p/599887666 总的来说&#xff0c;diffusion就是分为训练和采样两个阶段。 &#xff08;A&#xff09;训练阶段&#xff1a…

spring boot security快速使用示例

创建spring boot项目 生成脚手架 登录 https://start.spring.io/ 快速创建一个spring boot脚手架的demo&#xff1a; 配置依赖 因为本地依赖的原因&#xff0c;所以更换了spring boot版本为&#xff1a;2.6.11 <parent><groupId>org.springframework.boot<…

GC垃圾回收

GC垃圾回收 了解什么是垃圾回收掌握垃圾会回收的常见算法学习串行、并行、并发、G1垃圾收集器学习GC日志的可视化查看 1.什么是垃圾回收&#xff1f; 程序的运行必然需要申请内存资源&#xff0c;无效的对象资源如果不及时处理就会一直占有内存资源&#xff0c;最终将导致内…