JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
*SQL INNER JOIN 关键字
在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:INNER JOIN 与 JOIN 是相同的。
原始的表 (用在例子中的):
"Persons" 表:
Id_P
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Adams
|
John
|
Oxford Street
|
London
|
2
|
Bush
|
George
|
Fifth Avenue
|
New York
|
3
|
Carter
|
Thomas
|
Changan Street
|
Beijing
|
"Orders" 表:
Id_O
|
OrderNo
|
Id_P
|
1
|
77895
|
3
|
2
|
44678
|
3
|
3
|
22456
|
1
|
4
|
24562
|
1
|
5
|
34764
|
65
|
内连接(INNER JOIN)实例
现在,我们希望列出所有人的定购。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName
|
FirstName
|
OrderNo
|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。
SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Adams
|
John
|
Oxford Street
|
London
|
2
|
Bush
|
George
|
Fifth Avenue
|
New York
|
3
|
Carter
|
Thomas
|
Changan Street
|
Beijing
|
"Orders" 表:
Id_O
|
OrderNo
|
Id_P
|
1
|
77895
|
3
|
2
|
44678
|
3
|
3
|
22456
|
1
|
4
|
24562
|
1
|
5
|
34764
|
65
|
左连接(LEFT JOIN)实例
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName
|
FirstName
|
OrderNo
|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
Bush
|
George
|
|
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Adams
|
John
|
Oxford Street
|
London
|
2
|
Bush
|
George
|
Fifth Avenue
|
New York
|
3
|
Carter
|
Thomas
|
Changan Street
|
Beijing
|
"Orders" 表:
Id_O
|
OrderNo
|
Id_P
|
1
|
77895
|
3
|
2
|
44678
|
3
|
3
|
22456
|
1
|
4
|
24562
|
1
|
5
|
34764
|
65
|
右连接(RIGHT JOIN)实例
现在,我们希望列出所有的定单,以及定购它们的人 - 如果有的话。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName
|
FirstName
|
OrderNo
|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
|
|
34764
|
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。
SQL FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
原始的表 (用在例子中的):
"Persons" 表:
Id_P
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Adams
|
John
|
Oxford Street
|
London
|
2
|
Bush
|
George
|
Fifth Avenue
|
New York
|
3
|
Carter
|
Thomas
|
Changan Street
|
Beijing
|
"Orders" 表:
Id_O
|
OrderNo
|
Id_P
|
1
|
77895
|
3
|
2
|
44678
|
3
|
3
|
22456
|
1
|
4
|
24562
|
1
|
5
|
34764
|
65
|
全连接(FULL JOIN)实例
现在,我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName
|
FirstName
|
OrderNo
|
Adams
|
John
|
22456
|
Adams
|
John
|
24562
|
Carter
|
Thomas
|
77895
|
Carter
|
Thomas
|
44678
|
Bush
|
George
|
|
|
|
34764
|
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
分享到:
相关推荐
SQL 左连接、右连接和全连接知识点 在关系数据库管理系统中,连接操作是将两个或多个表连接起来,以便从多个表中检索数据。SQL 提供了多种连接操作,包括左连接、右连接和全连接。本篇文章将详细讲解左连接、右连接...
主要的连接类型有内连接、左外连接、右外连接和全连接。理解这些连接方式的区别有助于设计更有效的查询,以满足不同的数据需求。 1. **内连接(Inner Join)**: 内连接只返回那些在两个表中都存在匹配的行。...
内连接、左连接、右连接和全连接各有其适用场景,理解它们的原理并灵活运用是提高SQL查询效率的关键。此外,正确设置外键有助于维护数据库的数据完整性和一致性。希望本文能帮助大家更好地掌握SQL中的连接技术,为...
通过上述分析可以看出,左外连接、右外连接、内连接和全外连接各有特点,适用于不同的场景。选择合适的连接方式对于获取正确的数据非常重要。在实际应用中,应根据具体需求灵活选用这些连接方式。
本文将通过具体的实例,详细解析四种主要的连接类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),以及如何理解和使用它们。 首先,我们来看内连接(INNER JOIN)。内...
以下是四种主要的连接类型:内连接、左外连接、右外连接和全连接。 1. **内连接(INNER JOIN)**: 内连接是基于两个表之间的匹配列的值进行的连接,它只返回两个表中存在匹配的行。例如,在`authors`和`...
外连接可以分为左连接、右连接和全连接三种。 * 左连接:是以左表为基准,将 a.stuid = b.stuid 的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL。 ```sql select * from book as a left join stu as ...
外连接分为三种类型:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 **语法**: - **左外连接**: ```sql SELECT column_name(s) FROM table1 LEFT OUTER JOIN ...
SQL中的四种连接方式是数据库操作中非常重要的概念,它们分别是内连接、左外连接、右外连接和全连接。理解这四种连接可以帮助我们更有效地从多个表中提取所需信息。 1. **内连接(Inner Join)** 内连接是最常见的...
外部连接分为左连接、右连接和全外连接,每种连接方式都有其特定的应用场景。 1. 左外连接(LEFT OUTER JOIN): 左外连接保留了左表(在JOIN语句中指定的第一个表)的所有记录,并尝试匹配右表(第二个表)的记录...
### SQL内连接、外连接详解 #### 一、引言 ...内连接、左连接、右连接和全连接各有特点,在实际应用中可以根据具体场景灵活选择。掌握这些基本概念后,我们可以更加高效地处理复杂的多表查询问题。
主要有四种类型的JOIN:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全外连接(FULL OUTER JOIN)。其中,左连接查询是我们关注的重点。在左连接中,所有的左表记录都将被返回,即使在右表中...
外连接分为三种:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 - **左外连接**返回左表的所有行,以及与右表匹配的行。如果右表中没有匹配的行,那么对应列的值将...
在SQL中,主要有四种类型的连接查询:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。下面将详细解释这四种连接方式。 1. 内连接(INNER JOIN): 内连接返回两个表中...
例如,下面的语句 5、语句 6 和语句 9 分别演示了左外连接、右外连接和全外连接: 语句 5:左外连接 SELECT o.id, o.order_number, o.customer_id, c.id, c.name FROM orders o LEFT OUTER JOIN customers c ON c....
本文主要讨论了四种类型的连接:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),这些都是SQL-92标准定义的FROM子句连接语法的一部分。 1. **内连接**: 内连接返回满足...
2. 外连接查询(左连接、右连接和全连接) 外连接查询不仅返回满足连接条件的记录,还包含至少一方表中的所有记录。左连接返回左表的所有记录,即使在右表中没有匹配项。右连接反之,全连接则同时返回左右两表的所有...
接下来,我们要讨论的是外连接,包括左连接(Left Join)、右连接(Right Join)和全连接(Full Join)。外连接会返回所有来自一个表的记录,即使在另一个表中没有匹配的记录。在左连接中,所有的左表记录都会被包含...
本文主要介绍了五种类型的表连接:内部连接、外部连接(包括左连接、右连接和全外连接)、交叉连接以及自连接,并提供了相应的示例。 1. 内部连接(Inner Join): 内部连接是最常见的连接类型,它只返回两个表中...