內連接、外連接和交叉連接

  外連接與內連接有什麼區別? 收藏
(一)內連接
  內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的
列值。內連接分三種:
  1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結
果中列出被連接表中的所有列,包括其中的重複列。
  2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的
列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
  3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選
擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。
  例,下面使用等值連接列出authors和publishers表中位於同一城市的作者和出版
社:
   SELECT *
  FROM authors AS a INNER JOIN publishers AS p
  ON a.city=p.city
  又如使用自然連接,在選擇列表中刪除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


  (二)外連接
  內連接時,返回查詢結果集合中的僅是符合查詢條件( WHERE 搜索條件或 HAVING
條件)和連接條件的行。而採用外連接時,它返回到查詢結果集合中的不僅包含符合連
接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連
接)中的所有數據行。如下面使用左外連接將論壇內容和作者信息連接起來:


   SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
  ON a.username=b.username


  下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在
的城市:


    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

 


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhaow7/archive/2007/03/11/1526180.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章