表的内连接和外连接

文章目录

    • 内连接
    • 外连接
      • 左外连接
      • 右外连接

内连接

  1. 内连接(Inner Join):

内连接是最常用的一种表连接方式,它通过匹配两个或多个表中的共享列,将满足连接条件的行组合起来。只有在连接条件匹配的情况下,才会返回结果

SELECT 列1,2, FROM 表1 INNER JOIN 表2 ON 连接条件;

示例:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

在上面的示例中,通过 INNER JOIN 连接 Orders 表和 Customers 表,使用 CustomerID 列作为连接条件。只有当两个表中的 CustomerID 列匹配时,才会返回相应的结果。

外连接

  1. 外连接(Outer Join):

外连接是用于获取两个表中匹配和不匹配的行的连接方式。它包括左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。

左外连接(Left Outer Join):返回左表中的所有行以及与右表匹配的行。
右外连接(Right Outer Join):返回右表中的所有行以及与左表匹配的行。
全外连接(Full Outer Join):返回左表和右表中的所有行。

左外连接

语法:

select 字段名  from 表名1 left join 表名2 on 连接条件

示例:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

在上面的示例中,使用 LEFT JOIN 进行左外连接,返回所有的 Customers 表中的行,以及与 Orders 表中的 CustomerID 匹配的 OrderID。如果没有匹配的行,那么对应的 OrderID 列将显示为 NULL。

举例:

在学生表和成绩表中:查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

-- 当左边表和右边表没有匹配时,也会显示左边表的数据
select * from stu left join exam on stu.id=exam.id

通过使用内连接和外连接,可以根据需要将多个表中的数据进行关联查询,并获取所需的结果集。选择使用哪种连接取决于具体的业务需求和连接条件。

右外连接

select 字段 from 表名1 right join 表名2  on 连接条件;

与左外连接类似:

例子:

对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

select * from stu right join exam on stu.id=exam.id;

你可能感兴趣的:(MySQL,数据库)