熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

SQL實戰新手入門:全聯接(FULL JOIN)

2013-11-13 12:43:50  來源: SQL語言 

   全聯接(FULL JOIN)

  FULL JOIN是LEFT OUTER JOIN和RIGHT OUTER JOIN的組合如圖所示

  下面的查詢將給出包含所有圖書和所有書櫃位置的數據集其中一些圖書位於書架的同一層上該查詢與之前的查詢在結構上是相同的只是這裡使用了FULL JOIN查詢

  SELECT

  loc_shelf

   loc_position_left

   bk_title

  FROM location FULL JOIN books

  ON locationfk_bk_loc = booksbk_id

  由於現在從左表和右表都返回記錄因此哪一個表作為左表哪一個表作為右邊已經不再重要列出了該查詢結果中的變化

  表 FULL JOIN查詢返回的結果

  在上面的例子中由於參照完整性約束(關於參照完整性的詳細內容請參見第章)LOCATION表中不能存在不匹配的記錄因此必須交換左表和右表的位置並應用不同類型的聯接在很多情況下JOIN條件與主鍵/外鍵關系並不相同這時將獲得包含來自左右兩個表中匹配和不匹配記錄的數據集

  例如如果在一個列上聯接兩個表而該列既不是主鍵也不是外鍵(例如BK_ID = LOC_POSITION_LEFT)那麼結果集中不匹配的LOCATION記錄將包含大量的NULL值因為LOC_POSITION_LEFT僅具有個不同的值而BK_ID具有個值(這將返回個NULL值)盡管這是一個有效的SQL操作但是從邏輯的角度來看該查詢並沒有太大的意義用它來演示OUTERJOIN的概念則再好不過

  現在已經不再需要這條多余的記錄可以安全地將其從BOOKS表中刪除

  DELETE books WHERE bk_id=;

  在JOIN的例子中關鍵字OUTER是可選的也可以簡單地使用LEFTRIGHT或者FULL對於INNER JOIN也是如此RDBMS認為不帶任何限定符的JOIN是INNER JOIN類型然而使用限定符是一個良好的SQL實踐相對於不帶限定符的JOIN來說它使SQL代碼具有更好的可維護性

       返回目錄SQL實戰新手入門

       編輯推薦

       Oracle索引技術

       高性能MySQL

       數據倉庫與數據挖掘培訓視頻教程


From:http://tw.wingwit.com/Article/program/SQL/201311/16469.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.