Mysql表关联简单介绍(inner join、left join、right join、full join不支持、笛卡尔积)

文章目录

  • 0. 交集、并集、差集含义说明
  • 1. 简单演示上图七种情况
    • 0. A、B表数据准备
    • 1. left outer join 简称 left join 左表所有数据,右表关联数据,没有的以null填充
    • 2. right outer join 简称 right join,右表所有数据,左表关联数据,没有的以null填充
    • 3. inner join 简称 join 交集
    • 4. A left join B where B.key is null,A、B的差集是 A-B = 1
    • 5. B right join where A.key is null,B、A的差集是 B-A = 4
    • 6、7. full outer join 简写为full join(mysql不支持,oracle可以)
  • 2. 笛卡尔积 A * B
    • 1. 不带连接条件的笛卡尔积
    • 2. 带连接条件的笛卡尔积变inner join

在这里插入图片描述

0. 交集、并集、差集含义说明

A 是1、2、3
B是2、3、4
A、B的交集是A∩B = 2、3
A、B的并集是 AUB = 1、2、3、4
A、B的差集是 A-B = 1
B、A的差集是 B-A = 4

1. 简单演示上图七种情况

0. A、B表数据准备

CREATE TABLE `xin_stu_t` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`relation_id` bigint DEFAULT NULL COMMENT '外键, 记录教师id',`student_name` varchar(30) DEFAULT NULL COMMENT '姓名',`student_age` bigint DEFAULT NULL COMMENT '年龄',`school` varchar(300) DEFAULT NULL COMMENT '学校',PRIMARY KEY (`id`) USING BTREE,KEY `xin_s_relation_id` (`relation_id`),KEY `xin_s_student_name` (`student_name`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生表';CREATE TABLE `xin_teach_t` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`teacher_name` varchar(30) DEFAULT NULL COMMENT '教师姓名',`teacher_age` bigint DEFAULT NULL COMMENT '教师年龄',`school` varchar(300) DEFAULT NULL COMMENT '学校',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='教师表';INSERT INTO lelele.xin_stu_t (relation_id,student_name,student_age,school) VALUES(NULL,'尤仁义1',11,'徐州中学'),(1,'尤仁义2',12,'徐州中学'),(NULL,'朱有理1',11,'徐州中学'),(2,'朱有理2',12,'徐州中学'),(2,'朱有理3',13,'徐州中学'),(3,'宋昆明1',11,'徐州中学'),(3,'宋昆明2',12,'徐州中学'),(9,'宋昆明3',13,'徐州中学');INSERT INTO lelele.xin_teach_t (teacher_name,teacher_age,school) VALUES('王翠花1',31,'徐州中学'),('王翠花2',31,'徐州中学'),('王翠花3',33,'徐州中学'),('王翠花4',34,'徐州中学'),('王翠花5',35,'徐州中学');

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. left outer join 简称 left join 左表所有数据,右表关联数据,没有的以null填充

select A.*,B.* from xin_stu_t A left join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

select A.*,B.* from xin_stu_t A left outer join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

2. right outer join 简称 right join,右表所有数据,左表关联数据,没有的以null填充

select A.*,B.* from xin_stu_t A right join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

select A.*,B.* from xin_stu_t A right outer join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

3. inner join 简称 join 交集

select A.*,B.* from xin_stu_t A inner join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

select A.*,B.* from xin_stu_t A join xin_teach_t B on A.relation_id = B.id

在这里插入图片描述

4. A left join B where B.key is null,A、B的差集是 A-B = 1

 select A.*,B.* from xin_stu_t A left join xin_teach_t B on A.relation_id = B.id where B.id is null

在这里插入图片描述

5. B right join where A.key is null,B、A的差集是 B-A = 4

select A.*,B.* from xin_stu_t A right join xin_teach_t B on A.relation_id = B.id where A.id is null

在这里插入图片描述

6、7. full outer join 简写为full join(mysql不支持,oracle可以)

在这里插入图片描述

2. 笛卡尔积 A * B

1. 不带连接条件的笛卡尔积

select A.*,B.* from xin_stu_t A, xin_teach_t B

在这里插入图片描述
在这里插入图片描述

2. 带连接条件的笛卡尔积变inner join

select A.*,B.* from xin_stu_t A, xin_teach_t B where A.relation_id = B.id

在这里插入图片描述

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

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

相关文章

【java中的Set集合】HashSet、LinkedHashSet、TreeSet(最通俗易懂版!!)

目录 一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 二、LinkedHashSet集合 LinkedHashSet集合的特点 三、TreeSet集合 1.TreeSet集合的特点 2.TreeSet的基本使用 四、HashSet、LinkedHashSet、TreeSet的使用场景 五、list和set集合的区别 一、HashSet集合 …

【Apollo学习笔记】——规划模块TASK之SPEED_BOUNDS_PRIORI_DECIDER

文章目录 前言SPEED_BOUNDS_PRIORI_DECIDER功能简介SPEED_BOUNDS_PRIORI_DECIDER相关配置SPEED_BOUNDS_PRIORI_DECIDER流程将障碍物映射到ST图中ComputeSTBoundary(PathDecision* path_decision)ComputeSTBoundary(Obstacle* obstacle)GetOverlapBoundaryPointsComputeSTBounda…

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

时隔两个月, Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进,其中大家期待已久的 CDC Schema evolution(DDL 变更同步)、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta …

4.6 TCP面向字节流

TCP 是面向字节流的协议,UDP 是面向报文的协议 操作系统对 TCP 和 UDP 协议的发送方的机制不同,也就是问题原因在发送方。 UDP面向报文协议: 操作系统不会对UDP协议传输的消息进行拆分,在组装好UDP头部后就交给网络层处理&…

C++之访问vector<vector<char>>中的vector<char>元素(一百八十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

大模型综述论文笔记6-15

这里写自定义目录标题 KeywordsBackgroud for LLMsTechnical Evolution of GPT-series ModelsResearch of OpenAI on LLMs can be roughly divided into the following stagesEarly ExplorationsCapacity LeapCapacity EnhancementThe Milestones of Language Models Resources…

【爬虫】实验项目一:文本反爬网站的分析和爬取

目录 一、实验目的 二、实验预习提示 ​编辑 三、实验内容 四、实验要求 五、实验过程 1. 基本要求: 2. 改进要求A 3. 改进要求B: 六、资料 1.实验框架代码: 2.OpenSSL:Win32/Win64 OpenSSL Installer for Windows - Shining Light…

家政保洁行业小程序如何快速搭建

随着互联网的快速发展,家政保洁行业也逐渐向数字化转型。小程序作为一种轻量级应用,越来越成为各行各业进行线上推广的重要工具。那么,如何快速搭建家政保洁行业的小程序呢?本文将为你提供详细的步骤和指导。 一、准备开发环境 在…

CTFhub-文件上传-MIME绕过

Content-Type类型有:HTTP content-type | 菜鸟教程 用哥斯拉生成 php 木马文件 1.php 抓包---> 修改 conten-type 类型 为 imge/jpeg 用蚁剑连接 ctfhub{8e6af8109ca15932bad4747a}

是否在业务中使用大语言模型?

ChatGPT取得了巨大的成功,在短短一个月内就获得了1亿用户,并激发了企业和专业人士对如何在他们的组织中利用这一工具的兴趣和好奇心。 但LLM究竟是什么,它们如何使你的企业受益?它只是一种炒作,还是会长期存在? 在这篇文章中我…

ceph peering机制-状态机

本章介绍ceph中比较复杂的模块: Peering机制。该过程保障PG内各个副本之间数据的一致性,并实现PG的各种状态的维护和转换。本章首先介绍boost库的statechart状态机基本知识,Ceph使用它来管理PG的状态转换。其次介绍PG的创建过程以及相应的状…

ceph架构及 IO流程

CEPH是由多个节点构成的集群,它具有良好的可扩展性和可靠性。节点之间相互通信以达到: 存储和检索数据 数据复制 监控集群的健康状况 保证数据的完整性 检测故障并恢复 基本架构如下图: 分布式对象存储系统RADOS是CEPH最为关键的技术&a…

Java之API详解之BigDecimal类的详细解析

7 BigDecimal类 7.1 引入 首先我们来分析一下如下程序的执行结果: public class BigDecimalDemo01 {public static void main(String[] args) {System.out.println(0.09 0.01);}} 这段代码比较简单,就是计算0.09和0.01之和,并且将其结果…

SoC 总线结构学习记录之系统存储总线(System Memory Bus)与私有设备总线

蜂鸟 E203 SOC总线结构:  蜂鸟 E203 内核 BIU 的系统存储接口 ICB 连接系统存储总线,通过其访问 SoC 中的若干存储组件,譬如 ROM,Flash 的只读区间等。  蜂鸟 E203 内核 BIU 的私有设备接口 ICB 连接私有设备总线&#xff0c…

JVM的故事——虚拟机字节码执行引擎

虚拟机字节码执行引擎 文章目录 虚拟机字节码执行引擎一、概述二、运行时栈帧结构三、方法调用 一、概述 执行引擎Java虚拟机的核心组成之一,它是由软件自行实现的,能够执行那些不被硬件直接支持的指令集格式。 对于不同的虚拟机实现,执行引…

【深入解读Redis系列】Redis系列(五):切片集群详解

首发博客地址 https://blog.zysicyj.top/ 系列文章地址[1] 如果 Redis 内存很大怎么办? 假设一台 32G 内存的服务器部署了一个 Redis,内存占用了 25G,会发生什么? 此时最明显的表现是 Redis 的响应变慢,甚至非常慢。 这…

iPhone 15 Pro与iPhone 13 Pro:最大的预期升级

如果你在2021年首次发布iPhone 13 Pro时就抢到了它,那么你的合同很可能即将到期。虽然距离iPhone 15系列还有几周的时间,但你可能已经在想:是时候把你的旧iPhone升级为iPhone 15 Pro了吗? 我们认为iPhone 13 Pro是你现在能买到的最好的手机之一。但如果你想在2023年晚些时…

使用openpyxl来创建一个月的日程表

首先你心里要有一张表的样子,openpyxl才能帮你创建出其余的29张。 import openpyxl from openpyxl.styles import Alignment, Font import calendar from datetime import datework_path rXX\YY\ZZ\日报-九月.xlsxtry:workbook openpyxl.load_workbook(work_path…

python中的文件操作

我们平常对文件的基本操作,大概可以分为三个步骤(简称文件操作三步走): ① 打开文件 ② 读写文件 ③ 关闭文件 【注意事项】 注意:可以只打开和关闭文件,不进行任何读写 文件打开 open函数&#xff…

前端三大Css处理器之Less

Less是Css预处理器之一,分别有Sass、Less、Stylus这三个。 Lesshttps://lesscss.org/ Less是用JavaScript编写的,事实上,Less是一个JavaScript库,他通过混合、变量、嵌套和规则设置循环扩展了原生普通Css的功能。Less的少数…