MySQL【表的内外连接】

在 MySQL 多表查询中,表连接 是核心知识点,也是日常开发中使用频率极高的查询方式。表连接主要分为内连接和外连接,外连接又细分为左外连接、右外连接。

实际业务中,数据不会全部存在一张表里,比如员工信息存在emp表,部门信息存在dept表,学生信息存在stu表,成绩信息存在exam表。

想要关联查询多张表的数据 ,就必须用到表连接,它能将多张表通过关联字段组合,返回我们需要的完整结果。

一、内连接

内连接取两张表的交集,只返回满足连接条件的匹配数据,也是开发中最常用的连接方式。

本质:对两张表的笛卡尔积用ON/WHERE条件筛选,只保留匹配行。

语法:

备注:INNER可以省略,直接写JOIN就是内连接。

1.1 经典案例

需求:查询员工SMITH的姓名和对应部门名称。

  • 传统写法(等价内连接)

    SELECT ename, dname
    FROM EMP, DEPT
    WHERE EMP.deptno=DEPT.deptno
    AND ename='SMITH';

  • 标准内连接写法

    SELECT ename, dname
    FROM EMP
    INNER JOIN DEPT
    ON EMP.deptno=DEPT.deptno
    AND ename='SMITH';

两种写法执行结果一致,推荐使用标准内连接,逻辑更清晰、可读性更强。

二、外连接

外连接与内连接最大的区别:不满足连接条件的数据也会保留 ,会显示驱动表的全部数据。外连接分为左外连接右外连接

2.1 左外连接

左侧表完全显示 ,即使右表没有匹配数据,左表数据也会保留,右表字段补NULL

实战案例

先创建学生表stu和成绩表exam

复制代码
-- 学生表
CREATE TABLE stu (id INT, name VARCHAR(30));
INSERT INTO stu VALUES(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
-- 成绩表
CREATE TABLE exam (id INT, grade INT);
INSERT INTO exam VALUES(1, 56),(2,76),(11, 8);
  • 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

当左边表和右边表没有匹配时,也会显示左边表的数据!!!

结果:jack、tom显示对应成绩,kity、nono无成绩,成绩字段为NULL,但学生信息完整保留。

2.2 右外连接

右侧表完全显示 ,即使左表没有匹配数据,右表数据也会保留,左表字段补NULL

实战案例
  • 需求:显示所有成绩数据,无对应学生的成绩也要展示

结果:11号成绩无对应学生,学生字段为NULL,但成绩信息完整保留。

  • 列出部门名称和这些部门的员工信息,同时列出没有员工的部门

    SELECT d.dname, e.*
    FROM dept d
    LEFT JOIN emp e
    ON d.deptno=e.deptno;

连接类型 核心特点 结果集
内连接 取两表交集 仅返回匹配数据
左外连接 左表全显示 左表全部 + 右表匹配数据
右外连接 右表全显示 右表全部 + 左表匹配数据
相关推荐
白帽小丑1 天前
# 一次 MySQL DELETE 误操作的数据恢复尝试实录
数据库·mysql
Dxy12393102161 天前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
Quincy_Freak1 天前
信创内网数据规范实践:银河麒麟下SQLite本地数据安全管理方案
数据库·sqlite·arm·数据库管理·大数据分析·银河麒麟·aarch64
至乐活着1 天前
MySQL索引底层原理与查询优化实战:从B+树到执行计划
mysql·b+树·查询优化·sql性能·索引原理
2601_962683891 天前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
酱学编程1 天前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
shushangyun_1 天前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
华山令狐虫1 天前
DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
数据库·人工智能·sql·dbapi
IvorySQL1 天前
PG 技术日报|2026-07-04
数据库·人工智能·postgresql·开源
Hoxy.R1 天前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库