1. 程式人生 > >資料庫左右內外連線

資料庫左右內外連線

原文地址:http://blog.csdn.net/zhxp_zfl_wl/article/details/6523235

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" 中沒有匹配,這些行同樣會列出。

原文地址:http://blog.csdn.net/zhxp_zfl_wl/article/details/6523235