【MySQL】内外连接
内外连接
- 一、内连接
- 二、外连接
- 1、左外连接
- 2、右外连接
表的连接分为内连和外连。
一、内连接
内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选。只不过为了让sql的可读性更好,我们使用其他的关键字进行内连接。
语法:
SELECT ... FROM t1 INNER JOIN t2 ON 连接条件 [INNER JOIN t3 ON 连接条件] ... AND 其他条件;
说明:
- SQL中大写的表示关键字,[ ]中代表的是可选项。
下面是一些练习的数据表
雇员信息表数据库文件
- 三张表单

- 员工表(emp)
雇员编号(empno), 雇员姓名(ename),雇员职位(job),雇员领导编号(mgr),雇佣时间(hiredate)。
工资月薪(sal),奖金(comm),部门编号(deptno)。

- 部门表(dept)
部门编号(deptno),部门名称(dname),部门所在地点(loc)。

- 工资等级表(salgrade)
等级(grade),此等级最低工资(losal),此等级最高工资(hisal)。

1.1 显示SMITH的名字和部门名称
- 很明显,员工名称和部门名称分别在两张表中,
emp,dept。 - 我们想要同时显示员工名称和部门名称就需要我们对表进行内连接
emp inner join dept - 由于内连接是按照笛卡尔积的方式进行连接的,连接后有一些数据并不是真实有效的,所以我们还要对数据进行筛选
on emp.deptno=dept.deptno。 - 最后我们只要员工
SMITH的相关信息,所以我们可以使用where条件进行筛选。
select ename, dname from emp inner join dept on emp.deptno=dept.deptno where ename='SMITH';

可以看出这种写法我们将笛卡儿积的过滤条件单独挑出,这让我们的where子句的筛选条件更加清晰。
二、外连接
外连接分为左外连接和右外连接。
1、左外连接
如果进行联合查询,要求要保证左侧的表要完全显示,我们就说是左外连接。
SELECT ... FROM t1 LEFT JOIN t2 ON 连接条件 [LEFT JOIN t3 ON 连接条件] ... AND 其他条件;
给出一张学生表,学生表中的name代表的是学生的姓名,id代表的是学生的学号。如下:

再给出一张成绩表,其中的id代表的是考试学生的学号,grade代表的是学生的成绩。如下:

注意观察这两张表:
-
学生表中的
3,4号学生在成绩表中是没有成绩的(可能是缺考了) -
成绩表中的
11号学生,在学生表中是不存在的,(可能学生表统计漏了)
现在我们如果使用内连接进行连接,显示学号很姓名的,我们发现有一些信息会因为不存在,而被筛选掉。
select * from stu inner join exam on stu.id=exam.id;

1.1 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
可以看出题目要求学生表的信息要被完全展示,而成绩表中的信息如果实在不满足连接条件可以被忽略。
所以我们可以使用左外连接保证左边的表要被完全显示:
select * from stu left join exam on stu.id=exam.id;

观察表格:
-
学生表中的信息被完全被展示出来了!就算在成绩表中找不到
id与之匹配。同时因为找不到所以其对应的列全部以NULL进行填充 -
而成绩表中的11号
id,因为无法匹配而被筛选掉了。
2、右外连接
如果联合查询,右侧的表要求要被完全显示,我们就说是右外连接。
语法:
SELECT ... FROM t1 RIGHT JOIN t2 ON 连接条件 [RIGHT JOIN t3 ON 连接条件] ... AND 其他条件;
2.1 查询所有的成绩,就算这个成绩没有学生与它对应,也要将成绩信息显示出来
可以看出题目要求成绩表的信息要被完全展示,而学生表中的信息如果实在不满足连接条件可以被忽略。
所以我们可以使用右连接保证右边的表要被完全显示,(当然也可以调换表的顺序然后使用左外连接):
select * from stu right join exam on stu.id=exam.id;

观察表格:
-
成绩表中的信息被完全被展示出来了!就算在学生表中找不到
id与之匹配。同时因为找不到所以其对应的列全部以NULL进行填充 -
而学生表中的
3,4号id,因为无法匹配而被筛选掉了。
案例:列出部门名称和这些部门的员工信息,同时列出没有员工的部门
- 部门名称和的员工信息显然来自于不同的表中,所以我们需要连接两张表。
- 同时列出没有员工的部门,意味着我们要以部门为主。所以我们可以使用外连接。
- 连接条件就是部门的部门号要等于员工所在的部门号相等,即
dept.deptno=emp.deptno。
select dept.dname, emp.ename from dept left join emp on dept.deptno=emp.deptno;

相关文章:
【MySQL】内外连接
内外连接 一、内连接二、外连接1、左外连接2、右外连接 表的连接分为内连和外连。 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选。只不过为了让sql的可读性更好,我们使用其他的关键字进行内连接。 语法: SELECT ... FRO…...
selenium执行出现异常,SessionNotCreatedException ChromeDriver only supports
问题现状: 运行程序报错: selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 121.0.6167.85 with binary path /App…...
Flink:快速掌握批处理数据源的创建方法
Flink 社区最近 “基于FLIP-27” 设计了新的 Source 框架 。一些连接器(API)已迁移到这个新框架。本文介绍了如何使用这个新框架创建批处理源。 它是在为Cassandra实现Flink 批处理源时构建的。如果您有兴趣贡献或迁移连接器,这篇文章非常适合…...
基于cubeMX的正点原子miniSTM32对W25Q64的存储使用
一、实现目标 使用cubeMX建立项目工程,结合正点原子提供的hal库对W25Q64闪存调用的例程,实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程,其他项设置不再叙述,只看连接W25Q64的SPI设置,这里使用SPI1…...
C++笔记(三)
封装意义: 在设计类的时候,属性和行为写在一起,表现事物 类在设计时,可以把属性和行为放在不同的权限下,加以控制。 访问权限有三种: public 公共 类内 类外都可以访问, protected保护 类内可以访问…...
c语言不定参数
时间记录:2024/1/22 一、不定参数的函数定义和使用到的c函数 (1)定义 void fun1(参数类型 argName,...); 示例: void fun1(int count,...);(2)获取不定参数的值 #include <stdarg.h> //包含头文件…...
云手机与实体手机的对比
在数字化时代,云手机作为一种虚拟手机在云端服务器上运行,与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别,以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量,占据一定…...
diffusion 和 gan 的优缺点对比
sample速度GAN更快,Diffusion需要迭代更多次。 训练难度GAN 的训练可能是不稳定的,容易出现模式崩溃和训练振荡等问题。Diffusion 训练loss收敛性好,比较平稳。 模拟分布连续性Diffusion相较于GAN可以模拟更加复杂,更加非线性的分…...
VC++中使用OpenCV进行人脸检测
VC中使用OpenCV进行人脸检测 对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序, objectDetection.py代码如下: from __future__ import p…...
11Docker数据持久化
Docker数据持久化 容器中数据持久化主要有两种方式: 数据卷(Data Volumes)数据卷容器(Data Volumes Dontainers) 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录,可以绕过UFS(Unix F…...
RK3588平台开发系列讲解(视频篇)RKMedia框架
文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…...
Vue3 Teleport 将组件传送到外层DOM位置
✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…...
【学网攻】 第(5)节 -- Cisco VTP的使用
文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan 前言 网络已经成为了我们生活中不可或缺的一部分,它连接了世界各地的人们,让信息和资…...
uniapp复选框 实现排他选项
选择了排他选项之后 复选框其他选项不可以选择 <view class"reportData" v-for"(val, index) in obj" :key"index"> <view v-if"val.type 3" ><u-checkbox-group v-model"optionValue" placement"colu…...
openssl3.2/test/certs - 004 - cross root and root cross cert
文章目录 openssl3.2/test/certs - 004 - cross root and root cross cert概述笔记END openssl3.2/test/certs - 004 - cross root and root cross cert 概述 索引贴 openssl3.2 - 官方demo学习 - test - certs 笔记 // \file my_openssl_linux_log_doc_004.txt // openssl…...
图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解
【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解前言EfficientNet_V2讲解自适应正则化的渐进学习(Progressive Learning with adaptive Regul…...
05.Elasticsearch应用(五)
Elasticsearch应用(五) 1.目标 咱们这一章主要学习Mapping(映射) 2.介绍 Mapping是对索引库中文档的约束,类似于数据表结构,作用如下: 定义索引中的字段的名称定义字段的数据类型ÿ…...
npm更换镜像
大家好!今天给大家分享的知识是如何更换npm镜像 前言 有时候在加载npm时有时会很慢,那是由于node安装插件是从国外服务器下载,受网络影响大,速度慢且可能出现异常,这时候就需要更换镜像,使插件的安装快捷&…...
野指针(C语言)
野指针 //概念:野指针就是指针指向的位置是不可知的(随机的,不正确的 //,没有明确限制的,空间还属于操作系统而不属于程序的) //野指针成因: //1.指针未初始化 #include <stdio.h> int main() { int* p;//局部变量指针未初始化,默认为随机值 //此时p指向的空间不…...
动物姿态识别(数据集+代码)
动物姿态识别是指利用计算机视觉和深度学习技术来识别动物的姿态,即确定动物身体的姿态、方向和位置等信息。这种技术可应用于动物行为研究、动物健康监测、智能养殖等领域。 动物姿态识别的关键技术包括图像处理、特征提取和分类器设计。首先,需要对动…...
3步掌握:如何用HTML转Figma工具实现网页设计稿快速转换
3步掌握:如何用HTML转Figma工具实现网页设计稿快速转换 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 你是否曾羡慕某个网站的布局设计,却苦于无法快速将…...
【信息科学与工程学】计算机科学与自动化 第十篇 芯片设计04(5)
载流子统计与输运函数方程式详表 1. 载流子统计基础 (zailiu-1 ~ zailiu-100) 序号 名称 数学表达式/核心描述 参数说明 物理意义 应用场景 条件描述 zailiu-1 麦克斯韦-玻尔兹曼分布 f(E)=Ae−E/(kBT)或 f(v)=(2πkBTm)3/2e−mv2/(2kBT) E: 能量, v: 速度,…...
终极指南:Seal中Kotlin协程上下文组合的实用技巧
终极指南:Seal中Kotlin协程上下文组合的实用技巧 【免费下载链接】Seal 🦭 Video/Audio Downloader for Android, based on yt-dlp 项目地址: https://gitcode.com/gh_mirrors/se/Seal Seal是一款基于yt-dlp的Android音视频下载器,在其…...
终极Cybersources渗透测试工具大全:从Web应用到网络安全的全面覆盖指南
终极Cybersources渗透测试工具大全:从Web应用到网络安全的全面覆盖指南 【免费下载链接】cybersources A curated list of cybersecurity tools and resources. 项目地址: https://gitcode.com/gh_mirrors/cy/cybersources Cybersources是一个精心策划的网络…...
【信息科学与工程学】信息科学领域工程——第二篇 材料工程10 光学材料 (1) (光通信必学必会)
表1:光学材料知识库 第一部分:光学基础理论与数学模型 编号 算法/策略名称和伪代码/数学方程式 核心数学描述/规律 关键参数/变量 物理/化学/工程意义/控制目标 典型应用场景 优点与局限 关联知识连接点 1.1.1 麦克斯韦方程组 ∇D = ρ_f ∇B = 0 ∇E = -∂B/∂t ∇…...
Obsidian Importer:一站式笔记数据迁移终极指南
Obsidian Importer:一站式笔记数据迁移终极指南 【免费下载链接】obsidian-importer Obsidian Importer lets you import notes from other apps and file formats into your Obsidian vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-importer …...
Excel公式生成黑科技落地实录(ChatGPT+Power Query+LAMBDA三引擎联动)
更多请点击: https://intelliparadigm.com 第一章:Excel公式生成黑科技落地实录(ChatGPTPower QueryLAMBDA三引擎联动) 场景驱动的智能公式生成闭环 当财务团队需在5分钟内为127张销售报表动态生成「跨表多条件加权滚动同比」公…...
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...
3分钟上手QrazyBox:让损坏的二维码“起死回生“的终极修复工具
3分钟上手QrazyBox:让损坏的二维码"起死回生"的终极修复工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾经遇到过这样的场景:打印出来的二维码被…...
Driver Store Explorer:彻底清理Windows驱动存储,让你的系统运行如新的专业工具
Driver Store Explorer:彻底清理Windows驱动存储,让你的系统运行如新的专业工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来…...
