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 操作来实现数据查询和组合。
温馨提示:内容为网友见解,仅供参考
无其他回答

MySQL三种Join快速了解左连接右连接和内连接mysql三种join
1. 左连接(LEFT JOIN)左连接是一种常见的Join方式,它可以将两个表中符合条件的数据进行联合查询,并将左表中的所有记录都保留下来,右表中没有匹配到的记录用NULL填充。左连接的语法为:SELECT column_name(s)FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;下面是一...

Mysql之Join左联右联内联各解析mysql三种join
MySQL 中的三种 JOIN 操作可以帮助开发者轻松实现跨多个表的数据查询和组合。左联操作(LEFT JOIN)将左表中的数据与右表中的数据进行匹配,并显示所有左表的数据。右联操作(RIGHT JOIN)则将右表中的数据与左表中的匹配,并显示所有右表的数据。内联操作(INNER JOIN)则将两个表中的匹配数据进行连...

MySQL三个关联内联左联接右联接你需要知道它们是如何工作的才能更好地...
左联接是MySQL中另一个常用的关联操作,它和内联操作相似,但具有更高的灵活性和可读性。左联接将左表连接到右表,输出结果包含左表的所有行和右表的匹配行,如果右表中没有匹配行,则输出的结果中包含的字段值为NULL。为了实现左联接,我们需要使用LEFT JOIN关键字。以下是左联接的示例:SELECT FR...

MySQL 面试之left join right join的区别
(所影响的行数为 5 行)结果说明: left join以A表的记录为基础,A可以看作左表,B可以看作右表。left join以左表为准,换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为:A.aID = B.bID)。B表记录不足的地方均为NULL。2.right join sql语句...

MySQL 多表查询 "Join"+“case when”语句总结
左连接 left join 以左表为主,右表不存在的数据填充为 NULL。右连接 right join 则是以右表为主,左表不存在的数据填充为 NULL。全外连接 full outer join 包含了左表和右表中全部数据,未匹配的数据以 NULL 填充。连接操作后,可以继续使用 group by 和 having 函数对筛选结果进行聚合。case ...

5.MySQL连接查询join,联合查询union
首先,连接查询join大致可以分为交叉连接、内连接、外连接和联合查询。其中,交叉连接返回的是两张表中的每一行相互连接后的所有可能组合,这通常用于特定的查询场景。内连接是连接查询中的主要形式,分为等值连接和非等值连接两种。等值连接仅比较连接字段的值,而非等值连接则允许基于连接字段进行更复杂的...

图解:史上最详细之数据库左连接、右连接、内连接、全连接!
数据库连接方式详解 数据库查询中的连接操作是关键,包括内连接、外连接(左连接、右连接和全连接)以及较少见的联合查询。这些连接方式根据数据匹配和返回结果的不同,各有其用途。1. 内连接(INNER JOIN) 内连接是基于比较运算符(如=或>)在共享列上匹配数据,返回两个表中匹配的行。例如,...

如何在MySQL中使用JOIN操作连接多张表?
在 MySQL 中,连接多个表以进行联合查询是一项关键技能。本章节将介绍如何使用 JOIN 功能,包括 INNER JOIN(内连接)、LEFT JOIN(左连接)和 RIGHT JOIN(右连接),在 SELECT、UPDATE 和 DELETE 语句中实现数据的跨表查询。JOIN 主要用于获取两个或多个表中具有匹配关系的记录,以实现数据整合。让...

MySQL三表内联操作详解mysql三张表内联
实现MySQL三表内联的三个步骤 对于MySQL中的三表内联操作,我们需要进行以下三个步骤:1.确定三张表的关联关系 在MySQL中,表与表之间的关联关系可以通过SQL语句中的join关键字进行连接。在三表内联中,我们需要确定三张表之间的关联关系。假设我们有三个表A、B和C,其中表A和B通过字段f1关联,表B和C...

数据库内连接和外连接的区别
MySQL数据库内连接和外连接的区别 内连接:innerjoin selecta.*,b.*fromaINNERJOINbONa.id=b.id 只输出匹配的数据,即a,b表id相同的数据 外联接。左向外联接、右向外联接 1)LEFTJOIN或LEFTOUTERJOIN selecta.*,b.*fromaLEFTJOINbONa.id=b.id 左向外联接的结果集包括LEFTOUTER子句中指定的左表...

相似回答
大家正在搜