Mysql之Join左联右联内联各解析mysql三种join

MySQL 中的三种 JOIN 操作可以帮助开发者轻松实现跨多个表的数据查询和组合。左联操作(LEFT JOIN)将左表中的数据与右表中的数据进行匹配,并显示所有左表的数据。右联操作(RIGHT JOIN)则将右表中的数据与左表中的匹配,并显示所有右表的数据。内联操作(INNER JOIN)则将两个表中的匹配数据进行...
Mysql之Join左联右联内联各解析mysql三种join
MySQL 是一款常用的关系型数据库管理系统。对于开发者来说,查询是其经常使用的操作之一。而在查询中,经常需要使用到 JOIN 操作。JOIN 操作是将两个或多个表中的记录按照指定的字段匹配进行组合的一个操作。
JOIN 操作主要包括三种类型:左联、右联和内联。不同类型的 JOIN 操作使用不同的关键字进行表达,下面我们将详细讲解这三种 JOIN 操作。
1. 左联(LEFT JOIN)
左联操作将左表中的所有记录都显示出来,而右表中没有与左表中匹配的记录则为 NULL。左联操作使用的关键字为 LEFT OUTER JOIN 或 LEFT JOIN。
实例:
假设我们有两个表,一个是学生表(Student),一个是课程信息表(CourseInfo)。学生表中存储了每个学生的 id、姓名和性别信息;课程信息表中存储了每个课程的 id、名称和学生 id(表示选修该课程的学生)等信息。我们需要查询选修了某门课程的所有学生信息,包括未选修该课程的学生的信息。
代码:
SELECT Student.*, CourseInfo.course_name
FROM Student
LEFT JOIN CourseInfo
ON Student.id = CourseInfo.student_id
AND CourseInfo.course_name = ‘Math’;
解析:
以上代码中,我们首先使用了 SELECT 语句选择了要查询的字段。然后使用了 LEFT JOIN 关键字将两个表进行连接。在 ON 子句中我们使用了两个条件,一个是保证连接学生表和课程信息表中匹配的记录必须是同一个学生。另一个条件是保证连接的记录必须是选修了 Math 课程的学生信息,这一条件只会在右表中生效。最后使用了 * 通配符表示选择所有列。
2. 右连(RIGHT JOIN)
右联操作与左联相反,它显示的是右表中的所有记录,而左表中没有与右表中匹配的记录则为 NULL。右联操作使用的关键字为 RIGHT OUTER JOIN 或 RIGHT JOIN。
实例:
我们同样使用学生表(Student)和课程信息表(CourseInfo)来解析右联操作。我们需要查询选修了某门课程的所有学生信息,包括未选修该课程的学生的信息(全体学生的信息),且需要用右表的数据进行填充。
代码:
SELECT Student.*, CourseInfo.course_name
FROM Student
RIGHT JOIN CourseInfo
ON Student.id = CourseInfo.student_id
AND CourseInfo.course_name = ‘Math’;
解析:
以上代码与左联操作的代码十分相似。不同之处在于我们使用了 RIGHT JOIN 关键字来进行操作,以右表 CourseInfo 为基础,而左表 Student 未被匹配的记录则为 NULL。结果会显示选修了 Math 课程以及未选修该课程的所有学生信息,且 SQL 查询结果的所有记录将直接由右侧表格的数据填充而成。
3. 内联(INNER JOIN)
内联操作是连接两个表中所有匹配的记录。它只返回连接表中的匹配行,即两个表中能够同时匹配到的行。内联操作使用的关键字为 INNER JOIN 或 JOIN。
实例:
我们同样使用学生表(Student)和课程信息表(CourseInfo)来解析内联操作。我们需要查询选修了某门课程的所有学生信息。
代码:
SELECT Student.*, CourseInfo.course_name
FROM Student
INNER JOIN CourseInfo
ON Student.id = CourseInfo.student_id
AND CourseInfo.course_name = ‘Math’;
解析:
以上代码中我们使用了 INNER JOIN 实现了两个表的连接。使用 ON 关键字将两个表中匹配的记录连接起来。这一查询会返回选修了 Math 课程的所有学生信息。
总结:
MySQL 中的三种 JOIN 操作可以帮助开发者轻松实现跨多个表的数据查询和组合。左联操作(LEFT JOIN)将左表中的数据与右表中的数据进行匹配,并显示所有左表的数据。右联操作(RIGHT JOIN)则将右表中的数据与左表中的匹配,并显示所有右表的数据。内联操作(INNER JOIN)则将两个表中的匹配数据进行连接,并显示所有符合条件的匹配数据。根据不同的数据查询需求,开发者可以选择不同类型的 JOIN 操作来实现数据查询和组合。2024-08-13
mengvlog 阅读 12 次 更新于 2025-07-20 15:53:48 我来答关注问题0
  • MySQL 中的三种 JOIN 操作可以帮助开发者轻松实现跨多个表的数据查询和组合。左联操作(LEFT JOIN)将左表中的数据与右表中的数据进行匹配,并显示所有左表的数据。右联操作(RIGHT JOIN)则将右表中的数据与左表中的匹配,并显示所有右表的数据。内联操作(INNER JOIN)则将两个表中的匹配数据进行连...

  • 常见的三种Join方式包括左连接、右连接和内连接。左连接可以将左表中的所有记录都保留下来,右表中没有匹配到的记录用NULL填充;右连接是左连接的镜像操作,可以将右表中的所有记录都保留下来,左表中没有匹配到的记录用NULL填充;内连接只返回符合条件的记录,不会保留未匹配到的记录,查询速度比左连接...

  •  文暄生活科普 图解:史上最详细之数据库左连接、右连接、内连接、全连接!

    全连接(FULL JOIN):MySQL不支持,通常通过左连接和右连接的组合实现,返回所有数据。 3. 交叉连接(CROSS JOIN) 返回两个表的所有组合,也称笛卡尔积,用于展示所有可能的配对组合。4. 联合连接(UNION JOIN) 找出内连接和全连接之间的差异,用于数据分析和排错,但不常见于主流数据库。5....

  •  文暄生活科普 MySQL 多表查询 "Join"+“case when”语句总结

    内连接 inner join 选取两表中共同存在的数据进行联结。左连接 left join 以左表为主,右表不存在的数据填充为 NULL。右连接 right join 则是以右表为主,左表不存在的数据填充为 NULL。全外连接 full outer join 包含了左表和右表中全部数据,未匹配的数据以 NULL 填充。连接操作后,可以继续使...

  •  文暄生活科普 MySQL 多表查询 "Join"+“case when”语句总结

    left join以左表为主,右表没有的信息为空,适用于求差集问题。right join与left join相反,以右表为主。full outer join包括外连接,求两个集合并集,MySQL不支持,可通过左连接和右连接结果的UNION操作实现。连接后的筛选结果仍可使用group by、having等函数。case when语句在面试中常见,用于条件判断...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部