医院门户网站建设规划/青岛建站seo公司
1. 前言
- 多表查询,也称为关联查询.指两个或两个以上的表一起完成查询操作.
- 前提条件 : 这些一起查询的表之间是有关系的(一对一/一对多).他们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键.
2. 笛卡尔积现象(交叉连接)
(1).例 :
如果我们在两个表中未进行条件关联,直接查找,可能会出现笛卡尔积现象.即第一张表的一个数据需要跟第二张表的所有数据匹配.又称交叉连接.
- 图中2889条数据=第一张表的记录数X第二张表的记录数.
- CROSS JOIN的作用就是可以把任意表进行连接,即使这两张表不相关.
- 为了避免出现笛卡尔积现象,我们可以在WHERE子句中加入有效的条件.
3. 带有连接条件的多表查询
例 :
- 从第一张表的第一条记录开始,与第二章表的所有记录进行条件关联,剩下的是满足关联条件的记录. 只剩下106条记录.因为employees表中第一条记录的departmentid字段为null.
- FROM子句中,可以给表起别名.一旦起了别名,后续WHERE子句中,就不能使用以前的表名了.相当于表的别名对原先的表名进行了覆盖.但字段的别名不会对原字段进行覆盖.
4. 多表查询的分类
- 等值连接与非等值连接
- 自连接与非自连接
- 内连接与外连接
5. 等值连接与非等值连接
(1).等值连接 :
上述例就是等值连接.因为连接条件是=运算符.
(2). 非等值连接 :
自然而然,连接条件不是=运算符的,即是非等值连接.比如 :
- 当查询的字段是两个表中的共有字段时,需要指定是哪个表中的字段.不然会报错.
- 对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名进行限定(如d.locationid).
6. 自连接与非自连接
(1). 自连接
例 :
- 自连接顾名思义,自己的表与自己连接查询.
- emp与mana本质上是一张表(物理磁盘上只有一张表),只是用取别名的方式在逻辑上虚拟成两个表代表不同的意义,然后两个表进行内连接,外连接.
(2) 非自连接
上述例均为非自连接.
7. 内连接与外连接
(1). 内连接 : (数学中的交集)
上述我们涉及到的全部例子均是内连接.
合并具有同一列的两个以上的行,结果集中不包含一个表与另一个表不匹配的行.
格式为 :
SELECT 字段列表
# INNER可省略.
FROM A表 JOIN B表
ON 关联条件
WHERE 等其他子句.
例 :
只能查询到满足关联条件的记录,不能查询到不满足条件的记录.
还可以多个表内连接.
(2). 外连接
- 外连接分为 : 左外连接,右外连接,满外连接.
- 左外连接(LEFT OUTER JOIN / LEFT JOIN) : 结果集中不仅包含了两个表中满足连接条件的记录,还包含了左表中不满足连接条件的记录.
- 右外连接(RIGHT OUTER JOIN / RIGHT JOIN) : 结果集中不仅包含了两个表中满足连接条件的记录,还包含了右表中不满足连接条件的记录.
- 满外连接 : 结果集中不仅包含了两个表中满足条件的记录,还包含了左表中不满足条件的记录+右表中不满足条件的记录.
8. 左外连接与右外连接
(1). 左外连接
例 :
可以看到有107条记录,而上述内连接的情况下只有106条记录.可知左外连接包含了左表不满足条件的记录.
(2). 右表连接
右表连接与左表连接类似.
格式 :
SELECT 查询字段
FROM A表
RIGHT JOIN B表
ON 连接条件
WHERE 其他子句.
9. 满外连接与UNION关键字
- SQL99是支持满外连接的.即使用FULL JOIN/FULL OUTER JOIN来实现
- 但MySQL并不支持这种写法.但可以使用LEFT JOIN UNION RIGHT JOIN代替.
10. UNION的使用
(1). 合并查询结果 : 利用UNION关键字,可以给出多条SELECT语句,并将他们的结果组合成单个结果集.合并时,两个表对应的列数和数据类型必须相同.并且相互对应.各个SELECT语句间使用UNION/UNION ALL关键字分隔.
(2). UNION操作符
返回两个查询的结果集的并集,并去重复记录.
(3). UNION ALL操作符
返回两个查询的结果集的并集,但并不去重.
注意 : 执行UNION ALL语句时所需要的资源比UNION语句少.如果明知合并数据候的结果集不存在重复数据,或不需要去重,则尽量使用UNION ALL语句,以提高查询效率.
(4). 例 : UNION ALL实现连接 : 对应下表 左中 UNION ALL 右上 ---> 左下
SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE d.`department_id` IS NULL
UNION ALL #没有去重操作,效率高
SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments dON e.`department_id` = d.`department_id`;
11. 七种SQL JOINS的实现
如图 :
- 左上 : 左外连接 LEFT JOIN
- 左中 : 左外连接+WHERE过滤匹配的行
- 左下 : 左外连接+WHERE过滤匹配的行 UNION ALL 右外连接 / 右外连接+WHERE过滤匹配的行 UNION ALL 左外连接
- 中上 : 内连接 仅有匹配的行
- 右下 : 左外连接+WHERE过滤匹配的行 UNION ALL 右外连接+WHERE过滤匹配的行
- 右上 : 右外连接 RIGHT JOIN
- 右中 : 右外连接+WHERE过滤匹配的行
相关文章:

MySQL之多表查询
1. 前言 多表查询,也称为关联查询.指两个或两个以上的表一起完成查询操作.前提条件 : 这些一起查询的表之间是有关系的(一对一/一对多).他们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键. 2. 笛卡尔积现象(交叉连接…...

极端天气频发,我们普通人如何保全自己
随着全球气候变暖的加剧,极端天气事件如同一位不请自来的“不速之客”,频繁地闯入我们的生活。暴风雨、暴风雪、台风、干旱、热浪等极端天气现象,不仅给人们的生命和财产安全带来了前所未有的挑战,更对社会的正常秩序构成了严重威…...

直面市场乱价,品牌商家该如何解决?
在当今的商业世界中,品牌商面临着一系列严峻挑战,其中如何有效管理经销商价格是一个关键难题。经销商随意调整价格的行为,不仅会损害品牌的信誉与形象,还可能导致市场秩序混乱,使品牌利润大幅缩水。因此,采…...

Spring中的Bean相关理解
在Spring框架中,Bean是一个由Spring IoC容器实例化、配置和管理的对象。Bean是一个被Spring框架管理并且被应用程序各个部分所使用的对象。Spring IoC容器负责Bean的创建、初始化、依赖注入以及销毁等生命周期管理。 注:喜欢的朋友可以关注公众号“JAVA学…...

操作系统实战(二)(linux+C语言)
实验内容 通过Linux 系统中管道通信机制,加深对于进程通信概念的理解,观察和体验并发进程间的通信和协作的效果 ,练习利用无名管道进行进程通信的编程和调试技术。 管道pipe是进程间通信最基本的一种机制,两个进程可以通过管道一个在管道一…...

哪些情况下会触发MySQL的预读机制?
MySQL的预读机制主要与其底层存储引擎的实现有关,尤其是InnoDB存储引擎。预读(Pre-reading)或预取(Prefetching)是一种性能优化技术,其中数据库系统主动读取可能很快就会被查询到的数据页到缓冲池ÿ…...

react使用谷歌人机验证
在项目中,需要对请求验证,防止被爆破,这里使用的是谷歌的recaptcha-v3。 1.申请谷歌人机验证的api 申请链接,申请完后需要将两个谷歌颁发的key分别写入前,后端的配置环境中,后面会使用. 2.前端部分 前端使用的是viteC…...

java JMH 学习
JMH 是什么? JMH(Java Microbenchmark Harness)是一款专用于代码微基准测试的工具集,其主要聚焦于方法层面的基准测试,精度可达纳秒级别。此工具由 Oracle 内部负责实现 JIT 的杰出人士编写,他们对 JIT 及…...

本地运行AI大模型简单示例
一、引言 大模型LLM英文全称是Large Language Model,是指包含超大规模参数(通常在十亿个以上)的神经网络模型。2022年11月底,人工智能对话聊天机器人ChatGPT一经推出,人们利用ChatGPT这样的大模型帮助解决很多事情&am…...

图像处理:时域、空域、频率的滤波介绍
首先要搞清楚为什么会呈现出不同域的维度,来理解和处理图像,原因是图像的构成有多个维度的信息特点。比如一段视频从时间顺序来看,相邻的2个图像帧绝大部分信息是相同的,这就构成了前向预测的理论基础;比如一帧图像从空…...

TC8002D 是一颗带关断模式的音频功放IC
一、一般概述 TC8002D是一颗带关断模式的音频功放IC。在5V输入电压下工作时,负载(3Ω)上的平均功率 为3 W,且失真度不超过10%。而对于手提设备而言,当VDD作用于关断端时,TC8002D将会进入关断模式,此时的功耗极…...

深度学习之基于Vgg19预训练卷积神经网络图像风格迁移系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在数字艺术和图像处理领域,图像风格迁移技术一直备受关注。该技术可以将一幅图像的内容和…...

MySQL:多表查询练习
#1.出版社信息 与 图书信息 交叉连接 select * from 出版社信息 cross join 图书信息; #2.从“客户信息”和“订单信息”两张数据表中查询购买了商品的客户信息,要求查询结果显示客户姓名、订单编号、订单状态。 select 客户信息.客户姓名,订单信息.订单编号,订单…...

# 从浅入深 学习 SpringCloud 微服务架构(八)Sentinel(1)
从浅入深 学习 SpringCloud 微服务架构(八)Sentinel(1) 一、sentinel:概述 1、前言 – 服务熔断 Hystrix 的替换方案。 1)2018年底 Netflix 官方宣布 Hystrix 已经足够稳定,不再积极开发 Hys…...

[微信小程序] 入门笔记2-自定义一个显示组件
[微信小程序] 入门笔记2-自定义一个显示组件 0. 准备工程 新建一个工程,删除清空app的内容和其余文件夹.然后自己新建pages和components创建1个空组件和1个空页面. 设定 view 组件的默认样式,使其自动居中靠上,符合习惯.在app.wxss内定义,作用做个工程. /**app.wxss**/ /* 所…...

YOLO代码复现
睿智的目标检测66——Pytorch搭建YoloV8目标检测平台_pytorch_quantization yolov8-CSDN博客 Mask rcnn代码实现_pytorch版_适用30系列显卡_mask rcnn 30显卡-CSDN博客 完整且详细的Yolov8复现训练自己的数据集-CSDN博客...

使用fitten code插件(vscode),替换通义千问,识别需求中的输入输出
今天我们介绍一个工具,具体介绍可以参考我的这篇文章的介绍,支持vs code 插件,Fitten Code是一款由非十科技开发的AI代码助手,旨在通过大模型驱动来提升编程效率和体验-免费神器-CSDN博客https://blog.csdn.net/lijigang100/article/details/137833223?spm=1001.2014.3001…...

vue使用pdfjs-dist在电脑上展示PDF文件
安装 安装的时候一定要带上版本号,这里采用的是2.0.943(因为这个版本对于我目前的项目比较合适可以正常使用,其他版本大概率会报错),当前项目使用的是vue2,vue的版本是2.5.10 npm install pdfjs-dist@2.0.943 查看版本发现这玩意版本非常之多 使用 在使用pdfjs-dist库…...

【网站项目】戒烟网站
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...

慢性软组织疼痛如何使用DMS深层肌肉刺激仪进行治疗?
使用DMS深层肌肉刺激仪治疗慢性软组织疼痛,可以遵循以下步骤: 准备工作:首先,确保DMS设备已经充电或插上电源,并根据需要调整振动强度和频率。DMS深层肌肉刺激仪是通过快速连续的振动和打击来刺激深层肌肉的设备&#…...

自动化测试常用工具
自动化测试工具是非常重要的。自动化测试工具可以帮助程序员提高工作效率,减少重复劳动和人为错误,提高产品质量。下面我将介绍几个常用的自动化测试工具。 Selenium:Selenium是一个开源的自动化测试框架,用于Web应用程序的自动化…...

【Osek网络管理测试】[TG4_TC4]tWaitBusSleep
🙋♂️ 【Osek网络管理测试】系列💁♂️点击跳转 文章目录 1.环境搭建2.测试目的3.测试步骤4.预期结果5.测试结果1.环境搭建 硬件:VN1630 软件:CANoe 2.测试目的 验证DUT的tWBS时间参数是否符合NM标准 本处规定tWBS在[1350ms,1650ms]范围内符合要求 3.测试步骤…...

java08基础(值传递和引用传递 类和对象)
目录 一. 值传递和引用传递 1. 值传递 2. 引用传递 二. 面向对象思想 三. 类和对象 1. 类 2. 对象 2.1 使用 2.2 成员变量和局部变量区别 2.3 操作成员方法 2.4 this关键字(初识) 2.5 构造方法 (见java09) 一. 值传递和引用传递 1. 值传递 值传递是指在调用函数时将…...
高级数据结构与算法习题(9)
一、判断题 1、Let S be the set of activities in Activity Selection Problem. Then the earliest finish activity am must be included in all the maximum-size subset of mutually compatible activities of S. T F 解析:F。设S是活动选择问题中的一…...

Linux的vim下制作进度条
目录 前言: 回车和换行有区别吗? 回车和换行的区别展示(这个我在Linux下演示) 为什么会消失呢? 回车和换行的区别 为什么\r和\n产生的效果不同? 打印进度条: (1)打印字符串 …...

C++学习笔记2
T1 奇怪的教室 题目背景 LSU 的老师有个奇怪的教室,同学们会从左到右坐成一个横排,并且同一个位置可以坐多个同学。这天,入学考试的成绩下来了。同学们想根据入学考试的成绩,找出班里学霸扎堆的区域“学霸区”。 题目描述 共有…...

细数:智能物流装备界的并购案~
导语 大家好,我是智能仓储物流技术研习社的社长,老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 近年来,随着智能仓储物流行业的快速发展,全球范围内的并购活动日益频繁,各大企…...

微信小程序播放编码为 video/mp4;codecs=vp8 opus 的视频没有声音
最近在做浏览器录屏功能,主要是录屏加上麦克风生成mp4视频,最终生成的是编码为 video/mp4;codecsvp8 opus 的视频,音频编码因为是 opus 是无法在小程序正常播放的,这样就导致了视频没有声音。后来就在服务端做了一层转换ÿ…...

Linux 指令lsblk 作用,以及查看cpu使用情况和磁盘IO iostat指令详解
lsblk 指令 在Linux系统中,lsblk(列表块设备)命令是一个非常实用的工具,用于显示所有可用的块设备信息,如硬盘、USB驱动器、SD卡以及它们的分区。这个命令以易于理解的树状结构展示这些信息,清晰地表明了设…...

Mybatis之Sqlsession、Connection和Transaction三者间的关系
前言 最近在看Mybatis的源码,搜到这篇文章Sqlsession、Connection和Transaction原理与三者间的关系,debug之后发现有不少疑惑,于是按照原文整理了一下,记录下debug中的一些困惑点。 对于我们开发来讲,不管跟任何关系…...