亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

左、右、外、內連接的區別是什么?

左、右、外、內連接的區別是什么?

慕斯王 2019-07-03 18:46:11
左、右、外、內連接的區別是什么?我想知道如何區分所有這些不同的連接.。
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

簡單例子:讓我們說你有一個Students桌子,和Lockers桌子。在SQL中,在聯接中指定的第一個表,Students,是左邊第二張桌子,Lockers,是右(邊),正確的桌子。

每個學生都可以被分配到一個儲物柜,所以有一個LockerNumber列中的Student桌子。一個以上的學生可能在一個單獨的儲物柜里,但特別是在學年開始的時候,你可能會有一些沒有儲物柜的學生,還有一些沒有分配學生的儲物柜。

為了這個例子,讓我們假設100名學生其中有70個有儲物柜。你總共50個儲物柜其中40個至少有1個學生,10個儲物柜沒有學生。

內連接等于“讓我看看所有帶著儲物柜的學生".
任何沒有儲物柜的學生或沒有學生的儲物柜都失蹤了。
返回70行

左外連接會是“讓我看看所有的學生,如果他們有相應的儲物柜的話。". 
這可能是一個普通的學生名單,或者可以用來識別沒有儲物柜的學生。
返回100行

右外連接會是“把所有的儲物柜都給我看看,如果有的話,還有分配給他們的學生。". 
這可以用來識別沒有分配學生的儲物柜,或者有太多學生的儲物柜。
返回80行(列出40個儲物柜中的70個學生,加上10個沒有學生的儲物柜)

全外連接會很傻而且可能沒什么用。
就像“讓我看看所有的學生和所有的儲物柜,并在你能找到的地方匹配它們。
返回110行(所有100名學生,包括那些沒有儲物柜的學生。加上十個沒有學生的儲物柜)

交叉連接在這種情況下也相當愚蠢。
它不使用鏈接lockernumber在“學生”表中的字段中,因此您最終會得到一個巨大的列表,列出每個可能的學生對更衣室配對,不管它是否真的存在。
返回5000行(100名學生x50個儲物柜)。可能是有用的(過濾)作為一個起點,使新學生與空的儲物柜相匹配。


查看完整回答
反對 回復 2019-07-03
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

只有四種:

  1. 內連接

    最常見的類型。對于在聯接條件下匹配的每一對輸入行,都會產生一個輸出行。
  2. 左外連接

    :與內部聯接相同,但如果在右邊的表中找不到匹配行,則輸出一行,其中包含左側表中的值。

    NULL

    對于右邊表中的每個值。這意味著左邊表中的每一行將在輸出中至少出現一次。
  3. 右外連接

    *與左外部聯接相同,但表的角色反轉除外。
  4. 全外連接

    左、右外接的組合。兩個表中的每一行將至少在輸出中出現一次。

“交叉聯接”或“笛卡兒聯接”只是一個內部聯接,沒有為其指定任何連接條件,從而輸出所有對行。

感謝RusselH指出了完整的聯接,我忽略了這一點。


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 770 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號