当前位置: 首页 > news >正文

【MySQL】表连接

一、为什么要学习

因为不合理的使用连接会导致慢查询

二、什么是连接

参与连接的表叫做 连接表, 连接就是把 各个连接表 进行的组合 (笛卡儿积)加入结果集并返回

三、连接查询

如何只是对表进行大量的连接,笛卡儿积作用得到的结果量是巨大的 (乘法)。所有我们需要给连接表进行合理的过滤,选出我们需要的数据 。根据过滤方式,将连接表可划分为:

  1. 驱动表
  2. 被驱动表

拿着从驱动表中过滤得到的数据结果去与被驱动表匹配 (划分驱动表和被驱动表的方式)

四、外连接

1. 为什么需要

驱动表中的记录在被驱动表中不存在,但是要求我们也要显示出来,这时我们使用普通的连接(内连接)就不行了, 所以需要外连接 。

例子: 我们需要选出所有学生的线代成绩给线代老师看,要求包含所有学生,缺考的路人乙的成绩显示为 null 。

在这里插入图片描述

这时,我们使用普通的内连接(如下图)就不能完成了,需要使用外连接 。

在这里插入图片描述

2. 外连接分类

2.1 左外连接

示例 : 选出所有学生的线代成绩给线代老师看,要求包含所有学生,缺考的路人乙的成绩显示为 null 。

select Student.number, name, scores 
from Student left join Score
on
Student.number = Score.number and Score.subject = "线代";

在这里插入图片描述

2.2 右外连接

和左外连接唯一的区别就是,驱动表在右面

3 ON 和 Where 过滤的区别

ON 是专门为外连接场景提出的, 内连接中的 ON 和 Where 是等价的 。正常情况下,我们的外连接会把驱动表中的所有记录留下, 但是啊啊啊啊 , 有时候我们也不想全部留下鸭,我们也想选择一些有用的留下,这时就可以使用 ON 语句对驱动表中的数据进行过滤 —— ON 的过滤条件叫做连接条件。

注: 当使用外连接时用 where 过滤会报错

五、连接原理

1. 循环嵌套

2. 使用索引加快

http://www.lryc.cn/news/30402.html

相关文章:

  • 2023湖南省“楚怡杯”职业技能大赛“网络安全” 项目比赛任务书
  • Android应用启动优化笔记整理
  • 图像bytes字节串二进制转十六进制及bytes转为图像
  • 信息安全与数学基础-笔记-②同余
  • 网络安全法
  • django框架开发部署项目
  • Unity记录1.3-入门-第一阶段总结
  • Linux入门篇-文件管理
  • 如何从错误中成长?
  • 谈谈一个程序员的职场心得(真有用)
  • Pytest:一个卓有成效的测试工具
  • Compose 动画 (三) : AnimatedVisibility 从入门到深入
  • 网络基础(二)
  • Java线程知识点总结
  • 数据结构——第三章 栈与队列(4)
  • 华为机试HJ73-计算日期到天数转换
  • 【阅读笔记】你不知道的JavaScript--this与对象2
  • 单板TVS接地不当造成辐射骚扰超标问题分析-EMC
  • 用Python Flask为女朋友做一个简单的网站(附可运行的源码)
  • vue3+rust个人博客建站日记5-所有界面
  • 青少年软件编程C++一级真题(202212)
  • 【Spring】AOP底层原理(动态代理)-》 AOP概念及术语 -》 AOP实现
  • Java8 新特性 之 lambda 表达 和 函数式接口
  • Netty服务端和客户端开发实例
  • linux基本指令和权限
  • 滚蛋吧,正则表达式!
  • 序列号和反序列化--java--Serializable接口--json序列化普通使用
  • Java异步任务编排
  • Hive与HBase的区别及应用场景
  • C++之单例模式