常见的 join 类型以及用法示例

当涉及到多个数据表时,JOIN是SQL中最常用的操作之一。JOIN的作用是将多个数据表中的数据组合在一起,从而使用户可以根据不同的条件组合过滤和查询多个表中的数据,最终提取记录形成一个新的结果集,实现数据关联和查询分析。

常见的 join 类型包括:

  • 内连接(inner join)
  • 左连接(left join)
  • 右连接(right join)
  • 全连接(full join)

这些 join 类型可以根据数据集之间的关系和需求来选择,以便于得到所需的结果。

为了可以更好的理解不同Join类型的区别以及用法,我们下面举一个例子来进一步解析。


INNER JOIN

内连接是最基本的连接类型,它仅返回两个数据表中共有的记录或行。

语法:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....

FROM Table1

INNER JOIN Table2

ON Table1.MatchingColumnName = Table2.MatchingColumnName;

示例

SELECT Employee.EmpID, Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName

FROM Employee

INNER JOIN Projects ON Employee.EmpID=Projects.EmpID;

输出

解析

在这个例子中,我们连接了两个表T1(Employee Table)和T2(Project Table),并使用两个表共同的column_name列也就是EmpID进行连接。此时我们会发现只有EmpID为1、2、3、5的数据在两个表里共同存在。其他ID比如4或者9、8、7对应的数据仅在T1或者T2出现。所以最终只返回了EmpID为1、2、3、5的数据。


LEFT JOIN

LEFT JOIN 或 LEFT OUTER JOIN 返回左表中的所有记录以及右表中与左表匹配条件相符的记录。如果右表中没有匹配的记录,则在输出或结果集中显示NULL值。

语法:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....

FROM Table1

LEFT JOIN Table2

ON Table1.MatchingColumnName = Table2.MatchingColumnName;

示例

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName

FROM Employee

LEFT JOIN

ON Employee.EmpID = Projects.EmpID ;

输出

解析

在这个例子中,当我们连接了两个表T1(Employee Table)和T2(Project Table),并使用两个表共同的column_name列也就是EmpID进行连接。此时我们会发现只有T1有EmpID为4的信息T2中并没有,因为没有匹配到有关EmpID为4的ProjectID以及ProjectName所以在返回的结果集中返回为NULL。

RIGHT JOIN

RIGHT JOIN 或 RIGHT OUTER JOIN与左连接类似,但返回的是右表中的所有记录以及左表中满足条件的记录,对于左表中没有匹配值的记录,则在输出或结果集中显示NULL值。

语法:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....

FROM Table1

RIGHT JOIN Table2

ON Table1.MatchingColumnName = Table2.MatchingColumnName;

示例

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID, Projects.ProjectName

FROM Employee

RIGHT JOIN

ON Employee.EmpID = Projects.EmpID;

输出

解析

在这个例子中,我们连接了两个表T1(Employee Table)和T2(Project Table),并使用两个表共同的column_name列也就是EmpID进行连接。此时我们会发现只有T2有EmpID为9、7、8的信息T1中并没有,因为没有匹配到有关EmpID为9、7、8的EmpFname以及EmpLname所以在返回的结果集中返回为NULL。

FULL JOIN
Full Join或Full Outer Join返回左表和右表中满足匹配项(MatchingColumnName)的所有记录,并根据匹配条件组合在一起。如果在左表或右表中没有匹配的记录,则在结果集中显示NULL值。
语法:

SELECT Table1.Column1,Table1.Column2,Table2.Column1,....

FROM Table1

FULL JOIN Table2

ON Table1.MatchingColumnName = Table2.MatchingColumnName;

示例

SELECT Employee.EmpFname, Employee.EmpLname, Projects.ProjectID

FROM Employee

FULL JOIN Projects

ON Employee.EmpID = Projects.EmpID;

FROM Employee

输出

解析

在这个例子中,我们连接了两个表T1(Employee Table)和T2(Project Table),并使用两个表共同的column_name列也就是EmpID进行连接。此时我们会发现个别EmpID对应的ProjectID或者EmpFname、EmpLname没有匹配的信息。比如T1中没有T2中EmpID为9对应的数据,所以在返回的结果集中返回为NULL。


评论
登录后可评论
发布者
星小环分享号
文章
180
问答
205
关注者
27
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入