视频约120秒。碎片时间,关注收藏。
JOIN 表连接
SELECT 语句不限于从单个表中查询数据,也可以将多个表连接在一起,连接表的过程称为 JOIN。SQL 提供了多种连接,比如内连接和外连接等。
JOIN 表连接类型
备注:未展示交叉连接和自连接。
JOIN 表连接类型详解
备注:OUTER 可选。MySQL 中不支持全连接,可以使用左外连接 + UNION + 右外连接的方式实现。
JOIN 表连接语法
<code>SELECT 列名1,列名2 FROM 表名1 (INNER/LEFT/RIGHT/FULL) JOIN 表名2/<code>
表连接的意义在于在水平方向上合并两个或多个数据集,并产生一个结果数据集。
INNER JOIN 内连接详解
内连接 INNER JOIN 通过两列之间的关系连接两个或多个表。
假设有两个表:表R、表S,分别有4行数据。表R:(5,6,7,8),表S:(7,8,9,1)。当表R使用内连接与表S连接时,得到的结果是(7,8),它表示表R与表S的交集。
LEFT JOIN 左外连接详解
左连接 LEFT JOIN 将返回左表中的所有行,不管右表是否存在匹配的行。
假设有两个表:表R、表S,分别有4行数据。表R:(5,6,7,8),表S:(7,8,9,1)。当表R使用左外连接与表S连接时,得到的结果是(5,6,7,8)。
RIGHT JOIN 右外连接详解
右连接 RIGHT JOIN 将返回右表中的所有行,不管左表是否存在匹配的行。
假设有两个表:表R、表S,分别有4行数据。表R:(5,6,7,8),表S:(7,8,9,1)。当表R使用右外连接与表S连接时,得到的结果是(7,8,9,1)。
FULL JOIN 全外连接详解
完全外连接 FULL JOIN 包含连接表中的所有行,若无匹配行,用 NULL 值填充。
假设有两个表:表R、表S,分别有4行数据。表R:(5,6,7,8),表S:(7,8,9,1)。当表R使用全外连接与表S连接时,得到的结果是(5,6,7,8,9,1)。
JOIN 表连接使用示例
假设学生基础信息表A和学生选修课程表B,包含以下几个字段:
其中,各字段定义为:sid为学生ID、name为姓名、gender为性别,age为年龄,course为选修课程。
INNER JOIN 内连接示例
<code>SELECT COUNT(DISTINCT(A.sid)) AS s_cnt FROM A JOIN B ON A.sid = B.sid /<code>
该语句查询有选修记录的学生数。
LEFT JOIN 左外连接示例
<code>SELECT A.sid, A.s_name, B.course FROM A LEFT JOIN B ON A.sid = B.sid ORDER BY A.sid/<code>
该语句查询所有学生的选课明细记录。匹配不到的行会用NULL 填充。
碎片时间,关注收藏。
往期视频: