簡(jiǎn)單例子:讓我們說(shuō)你有一個(gè)Students
桌子,和Lockers
桌子。在SQL中,在聯(lián)接中指定的第一個(gè)表,Students
,是左邊第二張桌子,Lockers
,是右(邊),正確的桌子。
每個(gè)學(xué)生都可以被分配到一個(gè)儲(chǔ)物柜,所以有一個(gè)LockerNumber
列中的Student
桌子。一個(gè)以上的學(xué)生可能在一個(gè)單獨(dú)的儲(chǔ)物柜里,但特別是在學(xué)年開(kāi)始的時(shí)候,你可能會(huì)有一些沒(méi)有儲(chǔ)物柜的學(xué)生,還有一些沒(méi)有分配學(xué)生的儲(chǔ)物柜。
為了這個(gè)例子,讓我們假設(shè)100名學(xué)生其中有70個(gè)有儲(chǔ)物柜。你總共50個(gè)儲(chǔ)物柜其中40個(gè)至少有1個(gè)學(xué)生,10個(gè)儲(chǔ)物柜沒(méi)有學(xué)生。
內(nèi)連接等于“讓我看看所有帶著儲(chǔ)物柜的學(xué)生".
任何沒(méi)有儲(chǔ)物柜的學(xué)生或沒(méi)有學(xué)生的儲(chǔ)物柜都失蹤了。
返回70行
左外連接會(huì)是“讓我看看所有的學(xué)生,如果他們有相應(yīng)的儲(chǔ)物柜的話(huà)。".
這可能是一個(gè)普通的學(xué)生名單,或者可以用來(lái)識(shí)別沒(méi)有儲(chǔ)物柜的學(xué)生。
返回100行
右外連接會(huì)是“把所有的儲(chǔ)物柜都給我看看,如果有的話(huà),還有分配給他們的學(xué)生。".
這可以用來(lái)識(shí)別沒(méi)有分配學(xué)生的儲(chǔ)物柜,或者有太多學(xué)生的儲(chǔ)物柜。
返回80行(列出40個(gè)儲(chǔ)物柜中的70個(gè)學(xué)生,加上10個(gè)沒(méi)有學(xué)生的儲(chǔ)物柜)
全外連接會(huì)很傻而且可能沒(méi)什么用。
就像“讓我看看所有的學(xué)生和所有的儲(chǔ)物柜,并在你能找到的地方匹配它們。"
返回110行(所有100名學(xué)生,包括那些沒(méi)有儲(chǔ)物柜的學(xué)生。加上十個(gè)沒(méi)有學(xué)生的儲(chǔ)物柜)
交叉連接在這種情況下也相當(dāng)愚蠢。
它不使用鏈接lockernumber
在“學(xué)生”表中的字段中,因此您最終會(huì)得到一個(gè)巨大的列表,列出每個(gè)可能的學(xué)生對(duì)更衣室配對(duì),不管它是否真的存在。
返回5000行(100名學(xué)生x50個(gè)儲(chǔ)物柜)??赡苁怯杏玫?過(guò)濾)作為一個(gè)起點(diǎn),使新學(xué)生與空的儲(chǔ)物柜相匹配。