內連線與外連線的區別
內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的
列值。內連線分三種:
1、等值連線:在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結
果中列出被連線表中的所有列,包括其中的重複列。
例,下面使用等值連線列出authors和publishers表中位於同一城市的作者和出版社:
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
2、不等連線: 在連線條件使用除等於運算子以外的其它比較運算子比較被連線的
列的列值。這些運算子包括>、>=、<=、<、!>、!<和<>。
3、自然連線:在連線條件中使用等於(=)運算子比較被連線列的列值,但它使用選
擇列表指出查詢結果集合中所包括的列,並刪除連線表中的重複列。
例,在選擇列表中刪除authors 和publishers 表中重複列(city和state):
SELECT a.*,p.pub_id,p.pub_name,p.country
FROM authors AS a INNER JOIN publishers AS p
ON a.city=p.city
(二) 外連線
外連線,返回到查詢結果集合中的不僅包含符合連線條件的行,而且還包括左表(左
外連線或左連線))、右表(右外連線或右連線)或兩個邊接表(全外連線)中的所有資料行。
left join(左聯接) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄;
right join(右聯接) 返回包括右表中的所有記錄和左表中聯結欄位相等的記錄;
例如1:SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
ON a.username=b.username
例如2:SELECT a.*,b.*
FROM city as a FULL OUTER JOIN user as b
ON a.username=b.username
(三) 交叉連線
交叉連線不帶WHERE 子句,它返回被連線的兩個表所有資料行的笛卡爾積,返回到
結果集合中的資料行數等於第一個表中符合查詢條件的資料行數乘以第二個表中符合查
詢條件的資料行數。例,titles表中有6類圖書,而publishers表中有8家出版社,則下
列交叉連線檢索到的記錄數將等於6*8=48行。
例如:SELECT type,pub_name
FROM titles CROSS JOIN publishers
ORDER BY type