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

09-MySQL内外连接

💬 :如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区畅所欲言!我们一起学习、共同成长~!

👍 :如果你觉得这篇文章还不错,不妨顺手点个赞、加入收藏,并分享给更多的朋友噢~!


1. 表连接概述

在 MySQL 查询中,当需要从多个表中获取关联数据时,需使用 “表连接”。根据数据匹配规则的不同,表连接主要分为两大类:内连接外连接(含左外连接、右外连接),这是 C++ 面试 / 笔试中 MySQL 操作的高频基础考点。


2. 内连接(开发中最常用)

2.1 内连接的核心定义

  • 筛选规则:仅显示表 1 和表 2 中 “符合连接条件” 的记录,不满足条件的记录会被过滤。
  • 应用场景:需获取 “两个表都存在关联数据” 的场景(如 “查询有部门的员工及其部门名称”)。

2.2 内连接语法

内连接的两种常用语法面试中都可能考查,需熟练掌握:

语法类型语法格式说明
传统写法(逗号分隔)select 字段 from 表1, 表2 where 连接条件 [and 其他筛选条件];依赖where子句同时实现 “连接筛选” 和 “数据过滤”,易遗漏where导致笛卡尔积。
标准写法(inner join)select 字段 from 表1 inner join 表2 on 连接条件 [and 其他筛选条件];on明确 “连接条件”,逻辑更清晰,推荐面试中使用。

2.3 必掌握的代码案例(面试高频)

需求:查询员工SMITH的姓名(ename)和所属部门名称(dname)。

2.3.1 传统写法(逗号分隔 + where)

2.3.2 inner join(推荐)


3. 外连接

外连接与内连接的核心区别外连接会 “完全显示某一侧表的所有数据”,即使另一侧表没有匹配的记录(无匹配时显示NULL)。

根据 “完全显示的表” 的位置,分为左外连接和右外连接。

3.1 左外连接(left join)

3.1.1 左外连接定义

  • 核心规则完全显示 “左侧表” 的所有记录,右侧表仅显示 “满足连接条件” 的记录;若右侧表无匹配数据,右侧表对应字段显示NULL
  • 应用场景:需 “保留左侧表所有数据” 的场景(如 “查询所有学生的成绩,无成绩的学生也要显示姓名”)。

3.1.2 左外连接语法

select ...
from 表名1 left join 表名2  -- 表1即“左侧表”
on 连接条件;                

3.1.3 必掌握的代码案例

需求:查询所有学生的成绩(包括无成绩的学生)


3.2 右外连接(right join)

3.2.1 右外连接定义

  • 核心规则完全显示 “右侧表” 的所有记录,左侧表仅显示 “满足连接条件” 的记录;若左侧表无匹配数据,左侧表对应字段显示NULL
  • 应用场景:需 “保留右侧表所有数据” 的场景(如 “查询所有成绩,无对应学生的成绩也要显示”)。

3.2.2 右外连接语法

select ...
from 表名1 right join 表名2  -- 表2是“右侧表”
on 连接条件;                

3.2.3 必掌握的代码案例

需求:查询所有成绩(包括无对应学生的成绩),仍使用stuexam表。


4. 经典练习

需求:列出所有部门名称和对应部门的员工的全部信息,同时显示没有员工的部门

该需求的核心是 “保留所有部门数据”,需用外连接实现,面试中常考两种等价写法:

4.1 左外连接(dept为左侧表)

4.2 右外连接(dept为右侧表)

http://www.dtcms.com/a/553849.html

相关文章:

  • 【Linux】自动化构建工具make和Makefile和第一个系统程序—进度条
  • YOLO python 实现多种物体识别(时钟,水杯,小熊,路人,车辆)
  • wordpress如何自动采集网站图片建模培训
  • 建设银行网站会员怎么用装修设计公司快餐店
  • 华宇亮相2025丽泽法务论坛,共探法治前沿与法商融合新路径
  • 嫦娥号地月轨道、环月(一个月)MATLAB仿真
  • Spring AI Alibaba 【六】
  • .NET10 - 尝试一下Blazor Web Assembly Standalone App的fingerprint新特性
  • 浏览器使用 <embed> 标签预览 PDF 的原理
  • 未来之窗昭和仙君(四十七)开发商品进销存——东方仙盟筑基期
  • 交流平台网站架构怎么做wordpress客户端登录界面
  • 网站附件下载表格怎么做营销是做什么
  • Xcode26升级以后重要
  • Mac电脑解决sudo密码问题方法
  • 仓颉语言宏(Cangjie Macros)详细介绍及强大使用
  • Python异常、模块、包
  • flink 流式窗口
  • 仿京东电商的网站开发智慧团建网站什么时候维护好
  • 23.NAT之Easy-IP
  • Godot游戏开发——C# (一)
  • PyTorch实战:从零搭建CV模型技术文章大纲
  • 高效的DDC可编程控制器风机水泵空调节能控制器公司
  • PIL (Python Imaging Library) 相关方法详解1
  • U-Net 家族全解析
  • 德语网站制作网页设计建网站
  • Windows Linux 子系统 (WSL) 上的 Ubuntu
  • ftp工具下载网站源码教程手机视频wordpress
  • LeetCode 二叉树 437. 路径总和 III
  • 【GoLang】【框架学习】【GORM】4. 使用 BeforeUpdate hook 操作时,出现反射报错
  • 有哪些好点的单页网站公司管理制度完整版