Sql server left join,right join和inner join的比較

來源:互聯網
上載者:User

標籤:http   os   ar   sp   資料   div   on   代碼   html   

轉載於:http://www.2cto.com/database/201206/137067.html Sql server left join,right join和inner join的比較 今天來研究一下資料庫left join 、right join 和 inner join 這三者之間的區別 在網上看別人的寫過的原始碼,絕大多數的應用系統開發,資料庫都會有很多的各種各樣的join,那些個表table之間join的讓人眼花繚亂的,其實一直都是一知半解的狀態, 因為在公司上班也不用自己去寫SQL代碼(我這裡是指稍微大一點的正規軟體公司,很小小公司還是要自己寫sql的),因為公司有專門的DBA,通常都是DBA他們寫好了,直接給我們預存程序的名字讓我們去調用, (下次說預存程序吧,這是個非常重要的東西,幾乎都會用到,就像我們做ASP.NET開發一定要知道ADO.NET一樣,預存程序這種先行編譯的SQL指令碼對開發是很有好處的,我想在傳智播客楊老師的基礎視頻當中只所以會在頁面層代碼裡面直接寫sql查詢語句,應該是為了方便教學,節約時間吧) 廢話不多說,開始學習 這裡先給出一個官方的解釋:
 left join(左聯結) 返回包括左表中的所有記錄和右表中連接欄位相等的記錄right join(右聯結) 返回包括右表中的所有記錄和左表中連接欄位相等的記錄inner join(等值串連) 只返回兩個表中連接欄位相等的行是不是看的有點暈,那下面我們就自己實驗吧 第一步:建庫建表的過程我就省略了, 因為昨天的測試有一些簡單的代碼,就直接在上面稍做修改進行測試,下面插入一點測試資料 [sql]  Insert into Table1 values (1,‘姚羽‘)  Insert into Table1 values (2,‘邊兵兵‘)  Insert into Table1 values (3,‘袁磊‘)  Insert into Table1 values (5,‘傳智部落格‘)    Insert into Table2 values (1,‘姚羽‘)  Insert into Table2 values (2,‘柳春平‘)  Insert into Table2 values (3,‘張永超‘)  Insert into Table2 values (4,‘劉華健‘)  [sql]  Insert into Table1 values (1,‘姚羽‘)  Insert into Table1 values (2,‘邊兵兵‘)  Insert into Table1 values (3,‘袁磊‘)  Insert into Table1 values (5,‘傳智部落格‘)    Insert into Table2 values (1,‘姚羽‘)  Insert into Table2 values (2,‘柳春平‘)  Insert into Table2 values (3,‘張永超‘)  Insert into Table2 values (4,‘劉華健‘)   查詢出原表的資料如下:

 我們對比兩個table 發現,Table1 中的資料編號分別為1、2、3、5,而Table12中的資料編號分別為1、2、3、4,也就是說兩個表中,只有最後一條資料不一樣,分別為Table1中id為5的“傳智播客”和Table2中id為4的“劉華健”是對應不上的。好,我們繼續...
 第二步:執行left join 的效果[sql]  Select * from Table1 A  Left join Table2 B  on A.id = B.id  [sql]  Select * from Table1 A  Left join Table2 B  on A.id = B.id  

 (所影響的行數為 4 行)結果說明:left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的.換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜尋條件的記錄(例子中為: A.id = B.id).B表記錄不足的地方均為NULL.
 第三步:執行right join 的效果[sql]  Select * from Table1 A  right join Table2 B  on A.id = B.id  [sql]  Select * from Table1 A  right join Table2 B  on A.id = B.id  

 (所影響的行數也為 4 行)結果說明:仔細觀察一下,就會發現,和left join的結果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.第四步:執行inner join 的效果[sql]  Select * from Table1 A  inner join Table2 B  on A.id = B.id  [sql]  Select * from Table1 A  inner join Table2 B  on A.id = B.id  

 結果說明:
 很明顯,這裡只顯示出了 A.id = B.id的記錄.這說明inner join並不以誰為基礎,它只顯示合格記錄.好了,到此為止,總算弄清楚這兩者之間的區別了,資料庫是軟體開發的核心和基礎,一定要學好。 

Sql server left join,right join和inner join的比較

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.