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
输出: