当前位置:   article > 正文

mysql的基本知识点——JOIN联表查询

mysql的基本知识点——JOIN联表查询

SQL 的 JOIN 操作用于根据两个或多个表之间的相关列之间的关系,从这些表中查询数据。通过使用 JOIN,您可以结合来自多个表的信息,并基于某些匹配条件返回结果。
以下是 SQL 中 JOIN 操作的详细说明和一些用例:

INNER JOIN (或 JOIN)

返回两个表中都有的记录。只有当左表(即 JOIN 关键字左边的表)中的某行在右表中有匹配时,结果集中才包含该行。
用例:
假设我们有两个表:Customers 和 Orders。我们想找出所有下过订单的客户信息。

SELECT Customers.CustomerName, Orders.OrderID  
FROM Customers  
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • 1
  • 2
  • 3

LEFT JOIN (或 LEFT OUTER JOIN)

从左表返回所有的记录,即使右表中没有匹配。如果右表中没有匹配,则结果中右表的部分将包含 NULL。
用例:
我们想列出所有客户,以及他们的订单(如果有的话)。即使某些客户没有订单,我们也想看到他们的名字。

SELECT Customers.CustomerName, Orders.OrderID  
FROM Customers  
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • 1
  • 2
  • 3

RIGHT JOIN (或 RIGHT OUTER JOIN)

与 LEFT JOIN 相反,从右表返回所有的记录,即使左表中没有匹配。

SELECT Customers.CustomerName, Orders.OrderId
From Customers
Right JOIN Orders ON Customers.CustomerID = Orders.CustomerID
  • 1
  • 2
  • 3

注意:虽然 RIGHT JOIN 在理论上是有用的,但在实际应用中,LEFT JOIN 通常更受欢迎,因为它遵循从左到右的阅读习惯。你可以通过调换表的顺序和使用 LEFT JOIN 来达到 RIGHT JOIN 的效果。

FULL JOIN (或 FULL OUTER JOIN)

当左表或右表中有匹配时返回行。如果某一边没有匹配,则结果中相应的部分将包含 NULL。
用例:
我们既想列出所有客户,又想列出所有订单,即使某些客户没有订单或某些订单没有与之关联的客户。

SELECT Customers.CustomerName, Orders.OrderID  
FROM Customers  
FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • 1
  • 2
  • 3

CROSS JOIN

返回左表中的每一行与右表中的每一行的组合,也称为笛卡尔积。这通常不是您想要的,除非您明确需要这种组合。
用例:
假设我们有两个表:Colors 和 Sizes。我们想看到每种颜色与每种尺寸的所有可能组合。

SELECT Colors.ColorName, Sizes.SizeName  
FROM Colors  
CROSS JOIN Sizes;
  • 1
  • 2
  • 3

JOIN 的其他注意事项

  • 当使用 JOIN 时,确保连接条件明确且有意义,以避免返回不相关的数据或产生大量的结果。
  • 使用别名可以简化查询,特别是当表名很长或查询涉及多个表时。例如,Customers AS C。
  • 在大型数据库上执行 JOIN 操作时,确保相关的列已经建立了索引,以提高查询性能。
  • 使用 DISTINCT 可以消除结果集中的重复行。
  • 在复杂的查询中,可以使用括号来明确指定 JOIN 的顺序。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/312489
推荐阅读
相关标签
  

闽ICP备14008679号