當前訪問本站: hits

          yjhmily

          堅持走自己的路……

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            100 Posts :: 8 Stories :: 353 Comments :: 0 Trackbacks
                 假設我們現在有user和org兩張表:
          1、user用戶表 字段包含:id、name、orgId 其中orgId標示該用戶所屬的組織
          2、org組織表   字段包含:id、name
          兩表之間的關系很簡單,一個組織下會擁有多個用戶,一個用戶屬于某個組織。

                   在解析之前先普及一下數據庫空值(null)的概念:
          有很多時候我們都能碰到某表中某字段值為空的情況,空值不等同于字符串中的空格、空串
          也不等同于數字類型的0,所以,一般我們用IS NULL 關鍵字來檢索有空值字段的記錄。而不是用!=、<>這些判斷符。

                  接下來,我們給示例庫表中做上一些測試數據,如下圖:
                                       

                  有了這些數據,咱們就可以進入正題啦:
          一、左連接、右連接
                  A Left join(左連接)優先解出左表中所有的記錄,包含右表中沒有匹配到得記錄。
                  A Right join(右連接)優先解出右表中所有的記錄,包含左表中沒有匹配到得記錄。

          左右連接是相互對應的,所以在這里一并解釋。
          羅嗦一句如何區分左表和右表:
                  在JOIN的左邊出現的表叫左表,在JOIN的右邊出現的表叫右表
          具體體現在SQL語句上即:(以左連接為例)
                  左連接語句:SELECT user.name,org.name FROM user LEFT JOIN org ON  user.orgId = org.id
                  右鏈接語句:SELECT user.name,org.name FROM user RIGHT JOIN org ON  user.orgId = org.id
          顯而易見,該SQL中,user為左表、org為右表
          下面我們來看看這兩個語句分別執行后的效果:
                                             
                  為了更好的看出左右連接的效果,我們再來看看內連接查詢出來的效果
                  內連接:SELECT user.name,org.name FROM user JOIN org ON  user.orgId = org.id
          內連接語句執行后的效果:
                                                              
                  很明顯:
          內連接與左連接相比,檢索結果集中漏掉了user表的user3數據
          內連接與右連接相比,檢索結果集中漏掉了org表的org4數據

          posted on 2010-03-14 18:25 kangxm 閱讀(702) 評論(0)  編輯  收藏 所屬分類: SQL
          主站蜘蛛池模板: 鸡泽县| 乐东| 宜良县| 桂东县| 夹江县| 昭平县| 磐安县| 连山| 长岛县| 手游| 章丘市| 枣强县| 渝北区| 博客| 林口县| 雷波县| 大埔区| 望都县| 濮阳市| 大英县| 南岸区| 龙州县| 乌兰县| 桑日县| 上思县| 随州市| 南充市| 霍山县| 宁安市| 太保市| 浪卡子县| 崇州市| 德清县| 石屏县| 莱芜市| 乐亭县| 隆回县| 西安市| 阿勒泰市| 普格县| 天峻县|