內(nèi)連接與外的區(qū)別_第1頁
內(nèi)連接與外的區(qū)別_第2頁
內(nèi)連接與外的區(qū)別_第3頁
內(nèi)連接與外的區(qū)別_第4頁
內(nèi)連接與外的區(qū)別_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、有兩個表A 和表 B。表 A 結(jié)構(gòu)如下:Aid: ;標識Aname:varchar,主鍵,自增 ID數(shù)據(jù)情況,即用 select * from A 出來的情況如下圖1所示:圖1:A 表數(shù)據(jù)表 B 結(jié)構(gòu)如下:Bid: ;標識Bnameid:,主鍵,自增 ID數(shù)據(jù)情況,即用 select * from B 出來的情況如下圖2所示:圖2:B 表數(shù)據(jù)為了把 Bid 和 Aid 加以區(qū)分,不讓大家有誤解,所以把 Bid 的起始設(shè)置為100。有 SQL 基本知識的人都知道,兩個表要做連接,就必須有個連接字段,從上表中的數(shù)據(jù)可以看出,在A 表中的Aid 和 B 表中的 Bnameid 就是兩個連接字段。下圖

2、3說明了連接的所有集之間的關(guān)系:圖3:連接關(guān)系圖現(xiàn)在對內(nèi)連接和外連接一一講解。1.內(nèi)連接:利用內(nèi)連接可獲取兩表的公共部分的,即圖3的集 C語句如下:Select * from A JOIN B ON A.Aid=B.Bnameid運行結(jié)果如下圖4所示:圖4:內(nèi)連接數(shù)據(jù)其實select * from A,B where A.Aid=B.Bnameid 與Select * from A JOIN B ON A.Aid=B.Bnameid的運行結(jié)果是一樣的。2.外連接:外連接分為兩種,一種是左連接(Left JOIN)和右連接(Right JOIN)(1)左連接(Left JOIN):即圖3公共部分

3、集 C表 A集 A1。語句如下:select * from A Left JOIN B ON A.Aid=B.Bnameid運行結(jié)果如下圖5所示:圖5:左連接數(shù)據(jù)說明:在語句中,A 在 B 的左邊,并且是 Left Join,所以其運算方式為:A 左連接 B的=圖3公共部分集 C表 A集 A1在圖3中即集 C 中的存在的 Aid 為:2 3 6 7 8圖1中即表 A 所有集 A 中存在的Aid 為:1 2 3 4 5 6 7 8 9表A集A1中存在的Aid=(圖1中即A 表中所有Aid)-(圖3中即集C 中存在的 Aid),最終得出為:1 4 5 9由此得出圖5中A 左連接 B 的=圖3公共部

4、分集 C表A集 A1,最終得出的結(jié)果圖5中可以看出Bnameid 及Bid 非NULL 的都為圖3公共部分集 C 中的;Bnameid 及 Bid 為 NULL 的 Aid 為1 4 5 9的四筆就是表A集A1中存在的 Aid。(2)右連接(Right JOIN):即圖3公共部分集 C表 B集 B1。語句如下:select * from A Right JOIN B ON A.Aid=B.Bnameid運行結(jié)果如下圖6所示:圖6:右連接數(shù)據(jù)說明:在語句中,A 在 B 的左邊,并且是 Right Join,所以其運算方式為:A 右連接 B的=圖3公共部分集 C表 B集 B1在圖3中即集 C 中的

5、存在的 Aid 為:2 3 6 7 8圖2中即表 B 所有集 B 中存在的 Bnameid 為:2 3 6 7 8 11表B集 B1中存在的 Bnameid=(圖2中即 B 表中所有 Bnameid)-(圖3中即集 C 中存在的Aid),最終得出為:11由此得出圖6中A 右連接 B 的=圖3公共部分集 C表 B集 B1,最終得出的結(jié)果圖6中可以看出Aid 及 Aname 非NULL 的都為圖3公共部分集 B1中存在的集 C 中的Bnameid。;Aid 及 Aname 為 NULL 的 Aid 為11的就是表 B總結(jié):通過上面的運算解說,相信很多人已經(jīng)想到,上面的情況(包括圖3的關(guān)系圖)說明的

6、都只是A 在 B 的左邊的情況,以下語句 B 在A 的右邊的又會出現(xiàn)什么情況呢?select * from B Left JOIN A ON A.Aid=B.Bnameid select * from B Right JOIN A ON A.Aid=B.Bnameid其實對圖3左右翻轉(zhuǎn)一下就可以得出以下結(jié)論:select * from B Left JOIN A ON A.Aid=B.Bnameid 和 select * from A Right JOINB ONA.Aid=B.Bnameid 所得出的而select * from B Right JOINA.Aid=B.Bnameid 所得出

7、的集是一樣的A ON A.Aid=B.Bnameid 和 select集也是一樣的。*from A LeftJOINBON你是要弄清楚區(qū)別在什么地方還是單純想要文字說明文字說明的樓上說了一大堆了,不說了。弄個例題,直觀一點。兩個表:-表 stuid 1,2,3,4,name Jack Tom Kitynono-表examid1,grade562,7611,89內(nèi)連接 (顯示兩表id 匹配的)select stu.id,exam.id,, exam.grade from stu inner join exam on stu.id=exam.idstu.idexam.idnamegrade1 Jack 562 Tom 76左連接(顯示 join 左邊的表的所有數(shù)據(jù),exam 只有兩條顯示),所以 stu.id,grade 都用NULLselect stu.id,exam.id,, exam.grade from stu left join exam on stu.id=exam.id 1 1 Jack 562 Tom 76NULL Kity NULLNULL nono NULL右連接(與作連接相反,顯示join 右邊表的所有數(shù)據(jù))

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論