您现在的位置: 365建站网 > 365文章 > SQL中LEFT/RIGHT JOIN, INNER JOIN 和 FULL JOIN的区别是什么

SQL中LEFT/RIGHT JOIN, INNER JOIN 和 FULL JOIN的区别是什么

文章来源:365jz.com     点击数:166    更新时间:2023-11-11 20:42   参与评论

SQL中LEFT/RIGHT JOIN, INNER JOIN 和 FULL JOIN的区别是什么

在SQL中,JOIN是一种用于将两个或多个表中的数据连接在一起的操作。常用的JOIN操作包括LEFT JOIN、RIGHT JOIN、INNER JOIN和FULL JOIN。虽然它们都用于连接表,但它们的区别在于连接的方式和结果集的返回。

1. LEFT JOIN:

LEFT JOIN操作返回左表中的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,那么结果集中右表的列将显示为NULL。左表是指在FROM子句中出现在LEFT JOIN之前的表。

2. RIGHT JOIN:

RIGHT JOIN操作与LEFT JOIN相反,返回右表中的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,那么结果集中左表的列将显示为NULL。右表是指在FROM子句中出现在RIGHT JOIN之前的表。

3. INNER JOIN:

INNER JOIN操作返回左右表中匹配的记录。只有当左右表中的记录满足连接条件时,才会返回记录。INNER JOIN是默认的JOIN操作,如果没有指定JOIN类型,默认为INNER JOIN。

4. FULL JOIN:

FULL JOIN操作返回左右表中所有的记录,不管是否有匹配的记录。如果左表或右表中没有匹配的记录,则结果集中对应的列将显示为NULL。FULL JOIN是LEFT JOIN和RIGHT JOIN的结合。

下面是一个示例来说明这些JOIN操作的区别:

假设我们有两个表:Customers和Orders,它们之间有一个共同的字段CustomerID。

Customers表:

CustomerID CustomerName

1 John

2 Mary

3 Peter

Orders表:

OrderID CustomerID OrderDate

1 1 2022-01-01

2 1 2022-02-01

3 2 2022-01-15

现在我们可以使用不同的JOIN操作来连接这两个表并获取结果集。

使用LEFT JOIN:

SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate

FROM Customers

LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID

结果集:

CustomerName OrderID OrderDate

John 1 2022-01-01

John 2 2022-02-01

Mary NULL NULL

Peter NULL NULL

使用RIGHT JOIN:

SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate

FROM Customers

RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID

结果集:

CustomerName OrderID OrderDate

John 1 2022-01-01

John 2 2022-02-01

NULL 3 2022-01-15

使用INNER JOIN:

SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate

FROM Customers

INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID

结果集:

CustomerName OrderID OrderDate

John 1 2022-01-01

John 2 2022-02-01

使用FULL JOIN:

SELECT Customers.CustomerName, Orders.OrderID, Orders.OrderDate

FROM Customers

FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID

结果集:

CustomerName OrderID OrderDate

John 1 2022-01-01

John 2 2022-02-01

Mary NULL NULL

Peter NULL NULL

NULL 3 2022-01-15

通过以上示例,我们可以看到LEFT JOIN返回了左表中的所有记录,包括没有匹配的记录;RIGHT JOIN返回了右表中的所有记录,包括没有匹配的记录;INNER JOIN只返回左右表中匹配的记录;FULL JOIN返回了左右表中所有的记录。

在实际应用中,我们根据具体的查询需求选择合适的JOIN操作。通过合理的使用JOIN操作,我们可以从多个表中获取需要的数据,提高查询效率和数据分析的准确性。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (166人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号