MySQL 中内连接、左连接、右连接有什么区别?

  • 内连(inner join)— 把匹配的关联数据显示出来;
  • 左连接(left join)— 把左边的表全部显示出来,右边的表显示出符合条件的数据;
  • 右连接(right join)— 把右边的表全部显示出来,左边的表显示出符合条件的数据;

在MySQL中,内连接(Inner Join)、左连接(Left Join)和右连接(Right Join)是用于连接多个表的查询操作,它们之间有以下区别:

  1. 内连接(Inner Join):内连接返回两个表中匹配的行,即只返回在连接条件下两个表中都存在的匹配行。如果一行在一个表中没有匹配行,则不会包含在结果中。

  2. 左连接(Left Join):左连接返回左表中的所有行以及与右表匹配的行。如果右表中没有匹配的行,则返回NULL值。

  3. 右连接(Right Join):右连接返回右表中的所有行以及与左表匹配的行。如果左表中没有匹配的行,则返回NULL值。

简单来说,内连接会返回两个表中匹配的行,左连接会返回左表中的所有行和与之匹配的右表行,右连接会返回右表中的所有行和与之匹配的左表行。区别在于返回的结果集中是否包含某个表中没有匹配行的情况。

需要注意的是,连接操作需要在两个表之间建立关联条件,通常使用ON关键字指定连接条件。连接操作可以基于任意列进行,不一定局限于主键和外键的关系。此外,除了上述三种连接方式,还有全连接(Full Join)和交叉连接(Cross Join)等其他连接方式,但在MySQL中的语法稍有不同。

SQL示例

假设我们有两个表:CustomersOrders

Customers 表:

CustomerID CustomerName
1 John
2 Lisa
3 David

Orders 表:

OrderID CustomerID OrderDate
1 1 2021-01-01
2 2 2021-02-01
3 2 2021-03-01
4 3 2021-04-01
  1. 内连接(Inner Join):
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

结果:

CustomerID CustomerName OrderID OrderDate
1 John 1 2021-01-01
2 Lisa 2 2021-02-01
2 Lisa 3 2021-03-01
3 David 4 2021-04-01

内连接返回了两个表中匹配的行,并将它们组合在一起。

  1. 左连接(Left Join):
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

结果:

CustomerID CustomerName OrderID OrderDate
1 John 1 2021-01-01
2 Lisa 2 2021-02-01
2 Lisa 3 2021-03-01
3 David 4 2021-04-01
NULL NULL NULL NULL

左连接返回了左表(Customers)中的所有行,并与右表(Orders)中匹配的行组合在一起。如果右表中没有匹配的行,则返回NULL值。

  1. 右连接(Right Join):
SELECT Customers.CustomerID, Customers.CustomerName, Orders.OrderID, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

结果:

CustomerID CustomerName OrderID OrderDate
1 John 1 2021-01-01
2 Lisa 2 2021-02-01
2 Lisa 3 2021-03-01
3 David 4 2021-04-01
NULL NULL NULL NULL

右连接返回了右表(Orders)中的所有行,并与左表(Customers)中匹配的行组合在一起。如果左表中没有匹配的行,则返回NULL值。

这个示例演示了内连接、左连接和右连接在表之间建立关联关系时的不同结果。具体使用哪种连接方式取决于查询的需求和预期的结果。

版权声明:本文为博主作者:学亮编程手记原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/a772304419/article/details/134609943

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年4月10日
下一篇 2024年4月10日

相关推荐