SQL ‘LEFT JOIN’与’LEFT OUTER JOIN’的区别

SQL ‘LEFT JOIN’与’LEFT OUTER JOIN’的区别

在本文中,我们将介绍SQL中的’LEFT JOIN’和’LEFT OUTER JOIN’的区别。这两个关键词都是用于组合查询多个表时使用的。它们可以结合多个表的数据,并将它们联接在一起,以便进行更复杂的查询和分析。

阅读更多:SQL 教程

‘LEFT JOIN’和’LEFT OUTER JOIN’的基本概念

在SQL中,’LEFT JOIN’和’LEFT OUTER JOIN’用于连接两个或多个表,以从中选择匹配的行。它们的主要区别在于当左表的数据没有与右表的数据匹配时,它们的行为不同。

‘LEFT JOIN’返回左表中的所有行,以及与它们匹配的右表中的行。如果左表中的某行没有与右表中的任何行匹配,则返回的结果集中将显示NULL值。

‘LEFT OUTER JOIN’也返回左表中的所有行,以及与它们匹配的右表中的行。但是,与’LEFT JOIN’不同的是,如果左表中的某行没有与右表中的任何行匹配,则返回的结果集中将不仅包含NULL值,还将包含左表中的行。

使用示例

假设我们有两个表:订单表(orders)和客户表(customers)。订单表包含有关订单的信息,而客户表包含有关客户的信息。我们将使用这两个表来说明’LEFT JOIN’和’LEFT OUTER JOIN’之间的区别。

订单表(orders)的结构如下:

order_id customer_id order_date amount
1 1 2022-01-01 100
2 2 2022-01-02 200
3 3 2022-01-03 150

客户表(customers)的结构如下:

customer_id customer_name
1 John
2 Mary
4 David

假设我们希望获取每个订单的订单ID、客户名称和订单日期。我们可以使用’LEFT JOIN’或’LEFT OUTER JOIN’来执行此操作。下面是两者的示例查询:

‘LEFT JOIN’示例

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;

执行此查询后,将返回以下结果集:

order_id customer_name order_date
1 John 2022-01-01
2 Mary 2022-01-02
3 NULL 2022-01-03

注意到最后一行的’customer_name’列显示为NULL值,因为订单表中的’customer_id’为3的行在客户表中没有匹配的记录。

‘LEFT OUTER JOIN’示例

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
LEFT OUTER JOIN customers ON orders.customer_id = customers.customer_id;

执行此查询后,将返回以下结果集:

order_id customer_name order_date
1 John 2022-01-01
2 Mary 2022-01-02
3 NULL 2022-01-03

与’LEFT JOIN’的示例相同,这里的结果集也显示了’customer_name’列中的NULL值。

总结

‘LEFT JOIN’和’LEFT OUTER JOIN’在SQL中用于连接多个表,并获取匹配行的数据。它们的区别在于当左表中的行没有与右表中的行匹配时的行为。’LEFT JOIN’返回NULL值,而’LEFT OUTER JOIN’返回NULL值以及左表中的行。根据具体的查询需求,我们可以选择使用适当的关键词来获取所需的结果。这两个关键词是SQL中非常有用的工具,能够帮助我们处理复杂的数据查询和分析任务。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程