MySQL 视频课 · 50 集 / 多表查询:多表关系、内/外/自连接、联合查询 / P39

第 39 集 / 共 50 · 多表查询:多表关系、内/外/自连接、联合查询 · 视频 p=39 · 时长 8:15

P39 39. 基础-多表查询-内连接

讲义 5.3 内连接 p75–77

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p75–77 · 5.3 内连接 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=39) · 先看跟播对照

内连接是多表查询的主力:只保留两张表能对上的行。写法有两种,结果完全一样,选一种顺手的坚持下去。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

内连接只保留两张表能对上的行:员工有部门才出现,部门有员工才出现。

跟播:视频里 ↔ 本站

视频里 / 原课字段本站对应
emp.name / emp.age / dept.nameemployee.name / employee.age / department.name
emp.dept_id = dept.idemployee.dept_id = department.id

看视频时以讲义表为准,跟练时用本站表;结构相同、数字不同。

按这 4 步做

  1. 先确定连接条件:employee.dept_id = department.id。这是“员工属于哪个部门”的唯一依据,条件写错会得到看似正常其实错位的结果。
  2. 隐式写法把两张表用逗号并列,条件放 WHERE。老教材和简写常用,表一多就容易漏条件。
  3. 显式写法用 INNER JOIN ... ON,连接条件和过滤条件分家。推荐这种:ON 只写“怎么对上”,WHERE 只写“要哪些行”,读起来不容易混。
  4. 写完对一下行数。4 名员工里只有 3 人有部门,内连接就该是 3 行;多出来通常是漏了条件,少了则要查 dept_id 是否为空。另外,ON 里别写 e.age < 30 这类过滤——内连接结果一样,换成外连接就会保留不该保留的行。

小例

先准备本集练习数据:p39.sql · 练习库说明

SQL 示例
-- 表:department(1 研发部, 2 测试部, 3 运营部)
-- employee:小林22/研发8000/上级2,小周25/研发10000/无上级,小陈30/测试12000/上级2,小李21/无部门/NULL/上级2
-- 建表与插入语句见本页练习脚本 p39.sql(独立练习库 mysqlnotes_p39,跑一次就有这两张表)

SELECT e.name AS 员工, e.age AS 年龄, d.name AS 部门
FROM employee e
INNER JOIN department d ON e.dept_id = d.id
ORDER BY e.id;

返回 3 行:小林 22 研发部、小周 25 研发部、小陈 30 测试部。ON 负责把 dept_id 和 id 对上;ORDER BY e.id 只是让结果顺序稳定。把 INNER JOIN 换成“employee e, department d WHERE e.dept_id = d.id”,输出一模一样。 去掉 ORDER BY 再跑,行序可能变,但行集合不变:排序只影响展示。

易错点

30 秒速记

内连接=交集;隐式逗号+WHERE,显式 JOIN+ON;匹配不上的行直接消失。

自测(3 题,先答再展开)

自测 1:内连接和外连接最根本的区别?

内连接丢弃匹配不上的行;外连接保留某一侧全部行,另一侧用 NULL 补。

自测 2:两种内连接写法结果会不同吗?

不会,结果相同,只是条件位置和可读性不同。

自测 3:内连接会不会返回重复行?

会;一对多时一条左表记录匹配多行就会重复,需要按业务去重或聚合。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
BV1Kr4y1i7ru P39(平台标题)平台视频页 · P39静帧 t=98s 为“连接查询-内连接”标题页;具体 SQL 演示画面不清晰,示例为本笔记自写
MySQL 8.0 Reference Manual — JOIN Clause官方文档仅用于核对连接语义与错误码,不是课程材料

本集无逐字稿(匿名 player/v2 返回 subtitles=[]、need_login_subtitle=true),并以讲义公开镜像讲义 5.3 内连接(p75–77)核对章节与主题;画面静帧只用于确认场景,不是内容边界。示例表与数据为本笔记自建,不是课程原表;不含原始帧或字幕。

讲义对照:讲义 5.3 内连接 · p75–77(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–8:02 / 全片 8:15(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

下载本集 Markdown