数据库-联合查询(内连接外连接),子查询,合并查询

article/2025/6/9 23:32:15

一.为什么要使用联合查询

在数据设计时由于范式的要求,数据被拆分到多个表中,那么要查询一个条数据的完整信息,就要从多个表中获取数据,如下图所示:要获取学生的基本信息和班级信息就要从学生表和班级表中获取,这时就需要使用联合查询,这里的联合指的是多个表的组合。

二.多表联合查询时MYSQL内部是如何进行计算的​

参与查询的所有表取笛卡尔积,结果集在临时表中

笛卡尔积就是两表每一个行之间的全排列

联合表的个数越多,笛卡尔积就越大一般不超过三个

观察哪些记录是有效数据,根据两个表的关联关系过滤掉无效数据 要用到where条件
可以看到学生的班级编号和班级的id是一致的就是有效数据

以上就是有效数据

再举个例子

在下面两个表中查找许仙同学的成绩

 

寻找笛卡尔积

 可以看到非常之多

确定关联字段-- student_id

确定结果集的过滤字段

 精简查询字段

join on写法

上述都是内连接

接下来说外连接

外连接分为左外连接、右外连接和全外连接三种类型,MySQL不支持全外连接。​
左外连接:返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则结果集中对应字段会显示为NULL。​
右外连接:与左外连接相反,返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,则结果集中对应字段会显示为NULL。​

全外连接:结合了左外连接和右外连接的特点,返回左右表中的所有记录。如果某一边表中没有匹配的记录,则结果集中对应字段会显示为NULL。​

外连接在内连接的基础上的不同是基准表的所有行会全部显示出来,不管有没有被筛选

具体语法:

左连接:select 字段名 from 表名1 left join 表名2 on 连接条件;

右连接:select 字段 from 表名1 right join 表名2 on 连接条件;

 具体用例

 自连接(外连接)

自连接是自己与自己取笛卡尔积,可以把行转化成列,在查询的时候可以使用where条件对结果进行过滤,或者说实现行与行之间的比较。在做表连接时为表起不同的别名。
 

联合上面的学生表,成绩表和下面的课程表计算机原理大于java成绩的记录

取笛卡尔积

确定连接条件

 查出计算机组成原理大于java的成绩

 子查询:

子查询是把一个SELECT语句的结果当做别一个SELECT语句的条件,也叫嵌套查询​

查询与'不想毕业'同学的同班同学

以下是分步普通查询的做法↓

子查询写法

多行子查询 ​
嵌套的查询中返回多行数据,使用[NOT] IN关键字​

查询语文或英文课程的成绩

在from子句中使用子查询:子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。

查询所有比'中文系2019级3班'平均分高的学生成绩信息 

先查询平均成绩

再用这个临时表来联合查询 tmp是临时表的别名

也可以写成这样

 合并查询

在实际应用中,为了合并多个select操作返回的结果,可以使用集合操作符 union,union all​

关键字union(去除重复的行) union all(不去除重复的)

 

使用联合查询

 插入查询结果

多插入一条许仙学生信息student_id 11

 

 


http://www.hkcw.cn/article/Ulrvpgbbfo.shtml

相关文章

dvwa6——Insecure CAPTCHA

captcha&#xff1a;大概是“我不是机器人”的一个勾选框或者图片验证 LOW: 先输入密码正常修改试一下&#xff08;123&#xff09;&#xff0c;发现报错 查看源码&#xff1a; <?phpif( isset( $_POST[ Change ] ) && ( $_POST[ step ] 1 ) ) {// Hide the C…

通过基于流视频预测的可泛化双手操作基础策略

25年5月来自中国电信、西北工业大学和香港科大的论文“Towards a Generalizable Bimanual Foundation Policy via Flow-based Video Prediction”。 由于动作空间巨大且需要协调手臂运动&#xff0c;学习可泛化的双手操作策略对于具身智体而言极具挑战性。现有方法依赖于视觉-…

隧道监测预警系统:构筑智慧交通的安全中枢

在交通基础设施体系中&#xff0c;隧道作为关键节点&#xff0c;其安全运营直接关系到整个路网的畅通与稳定。隧道监测预警系统通过多维度感知网络与智能分析中枢的有机融合&#xff0c;构建起全天候、立体化的安全防护体系&#xff0c;成为守护隧道安全的智能防线。 一、系统…

【相机基础知识与物体检测】更新中

参考&#xff1a; 黑马机器人 | 相机标定&物体检测https://robot.czxy.com/docs/camera/ 01-相机基础 相机基础概述 相机是机器视觉的基础&#xff0c;相机直接产生了相机数据。所有视觉算法都是作用在相机数据上的。相机数据的好坏&#xff0c;或者对相机数据的理解方式…

Nginx实战

更多推荐阅读&#xff1a; 前端性能&异常分析排查流程-CSDN博客 关于列表性能分析与标准-CSDN博客 Fullcalendar常用功能介绍-CSDN博客 目录 Nginx介绍 下载和安装 实战分享 场景一、localhost代理线上环境 场景二&#xff1a;通过本地路径访问其他域名的地址信息 防盗链功…

java实用类

文章目录 SystemSystem.exit(int status);currentTimeMillis String 类String两种创建方式String提供的常用方法 Runtime作用演示 Object类常用方法重写 toString()重写 equals() 和 hashCode() BigInter类BigInter 构造方法常用方法演示 BigDecimal类常见构造器常用方法演示 S…

windows安装多个版本composer

一、需求场景 公司存在多个项目&#xff0c;有的项目比较老&#xff0c;需要composer 1.X版本才能使用 新的项目又需要composer 2.X版本才能使用 所以需要同时安装多个版本的composer二、下载多个版本composer #composer官网 https://getcomposer.org/download/三、放到指定目…

【域控制器EMC】域控制器EMC设计总结

一&#xff1a;总结 汇总项目设计当中关于EMC的设计要点&#xff0c;主要从原理设计、Layout、结构、外设部分总结。 满足要求的器件和合理的电路能降低电磁干扰&#xff1b; 正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。 结构件设计也会对EMC性能产生影响 二&a…

01 RK3568调试4G 模块 EG800AK-CN

1、添加pid、vid信息 为了识别模块&#xff0c;需将模块的VID和PID信息添加到[KERNEL]/drivers/usb/serial/option.c文件中&#xff0c;对应的VID和PID下图所示&#xff1a;EG800AK参考EC800M static const struct usb_device_id option_ids[] { #if 1 //此处为添加的代码&a…

Redis底层数据结构之跳表(SkipList)

SkipList是Redis有序结合ZSet底层的数据结构&#xff0c;也是ZSet的灵魂所在。与之相应的&#xff0c;Redis还有一个无序集合Set&#xff0c;这两个在底层的实现是不一样的。 标准的SkipList&#xff1a; 跳表的本质是一个链表。链表这种结构虽然简单清晰&#xff0c;但是在查…

Modbus转ETHERNET IP网关:快速冷却系统的智能化升级密钥

现代工业自动化系统中&#xff0c;无锡耐特森Modbus转Ethernet IP网关MCN-EN3001扮演着至关重要的角色。通过这一技术&#xff0c;传统的串行通讯协议Modbus得以在更高速、更稳定的以太网环境中运行&#xff0c;为快速冷却系统等关键设施的自动化控制提供了强有力的支撑。快速冷…

C# 中的对话框与导航:构建流畅用户交互的完整指南

在现代应用程序开发中&#xff0c;良好的用户交互体验是成功的关键因素之一。作为.NET开发者&#xff0c;熟练掌握C#中的对话框与导航技术&#xff0c;能够显著提升应用程序的易用性和专业性。本文将全面探讨Windows Forms、WPF、ASP.NET Core和MAUI等平台下的对话框与导航实现…

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章

随着信创国产化战略的深入推进和鸿蒙操作系统&#xff08;HarmonyOS Next&#xff09;的迅速崛起&#xff0c;市场对兼容国产软件生态的需求日益增长。在这一背景下&#xff0c;中安身份证识别和银行卡识别技术应运而生&#xff0c;为鸿蒙生态的发展注入了新的活力。 移动端身份…

3步在小米13手机跑DeepSeek R1

大家好&#xff01;我是羊仔&#xff0c;专注AI工具、智能体、编程。 一、从性能旗舰到AI主机 春节大扫除时&#xff0c;翻出尘封的小米13&#xff0c;这台曾以骁龙8 Gen2著称的性能小钢炮&#xff0c;如今正在执行更科幻的使命——本地运行DeepSeek R1。 想起两年前用它连续肝…

Unity ARPG战斗系统 _ RootMotion相关知识点

1.作用 : 避免动画播放与实际位移产生偏差,从而避免"滑步"现象。 2.基本原理 : Root Motion通过相对位移和转角来移动游戏角色,而不是像动画文件会直接修改每一帧里对象的坐标值和角度值。 3.OnAnimation( ) : 是将Root Motion控制权交给开发者,通过脚本来控制(关于…

Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件

代码&#xff1a;express-exe: 将Express开发的js打包成exe服务丢给客户端使用 实现目标 Express 集成 Sequelize 操作 Sqlite3 数据库&#xff1b; 启动 Sqlite3 时默认开启 WAL 模式&#xff0c;避免读写互锁&#xff0c;支持并发读&#xff1b; 利用 Conf 实现主进程与 Ex…

无人机巡检智能边缘计算终端技术方案‌‌——基于EFISH-SCB-RK3588工控机/SAIL-RK3588核心板的国产化替代方案‌

一、方案核心价值‌ ‌实时AI处理‌&#xff1a;6TOPS NPU实现无人机影像的实时缺陷检测&#xff08;延迟&#xff1c;50ms&#xff09;‌全国产化‌&#xff1a;芯片、操作系统、算法工具链100%自主可控‌极端环境适配‌&#xff1a;-40℃~85℃稳定运行&#xff0c;IP65防护等…

蓝桥杯国赛训练 day1

目录 k倍区间 舞狮 交换瓶子 k倍区间 取模后算组合数就行 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {solve();}public static vo…

Monorepo 详解:现代前端工程的架构革命

以下是一篇关于 Monorepo 技术的详细技术博客&#xff0c;采用 Markdown 格式&#xff0c;适合发布在技术社区或团队知识库中。 &#x1f9e9; 深入理解 Monorepo&#xff1a;现代项目管理的利器 在现代软件开发中&#xff0c;项目规模日益庞大&#xff0c;模块之间的依赖关系…

Vue 树状结构控件

1、效果图如下所示&#xff1a; 2、网络请求的数据结构如下&#xff1a; 3、新建插件文件&#xff1a;menu-tree.vue&#xff0c;插件代码如下&#xff1a; <template><div class"root"><div class"parent" click"onParentClick(pare…