標籤: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的比較