SQL教程(十四)连接JOIN

SQL教程(十四)连接JOIN

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

INNER JOIN:如果表中有至少一个匹配,则返回行

LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

FULL JOIN:只要其中一个表中存在匹配,则返回行

关键字JOIN和INNER JOIN是一样相同的。

 

1、原始数据

表1

表2

2、不使用JOIN

输入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons, Orders

WHERE Persons.Id_P = Orders.Id_P

输出:

3、关键字JOIN—— INNER JOIN连接

输入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo(检索的列名)

FROM Persons(指定的表)

INNER JOIN Orders (检索的表)

ON Persons.Id_P = Orders.Id_P(匹配内容)

ORDER BY Persons.LastName(排序的列名)

输出:

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。

4、关键字JOIN—— LEFT JOIN 关键字

LEEF JOIN全称为左外连接(left outer join),外连接的一种;

实例:列出所有的人,以及他们的定购 - 如果有的话。(即使没有也会返回行)

输入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

LEFT JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

输出:

5、关键字JOIN—— RIGHT JOIN 关键字

LEEF JOIN它的全称为右外连接( right outer join),是外连接的一种

实例:列出所有的人,以及他们的定购 - 如果有的话。(即使没有也会返回行)

输入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

RIGHT JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

输出:

6、关键字JOIN—— FULL JOIN 关键字

存在匹配,匹配显示;同时,将各个表中不匹配的数据与空数据行匹配进行显示。可以看成是左外连接与右外连接的并集。

实例:列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。

输入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

FULL JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName

输出: