左連線 右連線 全連結 內連線 詳解
題目:查詢下列兩表的對應關係
全連結 :相當於集合的並集 全部都會聯合一次
在查詢對應關係的時候
A表10000行,B表10000行,都不算大.
但是全相乘,在記憶體中生成一個非常大的資料. 10000*10000行.
另外:索引沒利用
雖然全連結很常用 很多人用,但是它的效率極低,生成n*m行資料再篩選出來
左連結:
左連線的語法:
假設A表在左,不動,B表在A表的右邊滑動.
A表與B表通過一個關係來篩選B表的行.
語法:
A left join B on 條件 條件為真,則B表對應的行,取出
A left join B on 條件
這一塊,形成的也是一個結果集,可以看成一張表 設為C
既如此,可以對
以男生為基準,女生表從上往下逐個匹配,由於次方法用索引,所以效率高很多!
沒有另一半的,用NULL補齊
以女生為基準,男生表從上往下逐個匹配
注意,a left join b,並不是說a表的就一定在左邊,只是說在查詢資料時,以a表為準
右連線:
用右連線. 剛才是 女生 left join 男
用右連線,只需 男 right join 女
就是一個相對的關係 你在我左邊 那麼 我就在你右邊 明白了左連結 反過來就明白右連線了!
左右連線是可以互換的
A left join B, 就等價於
注意:既然左右連線可以互換,儘量用左連線,出於移植時相容性方面的考慮.
內連線:
如果從集合的角度
A inner join B
和 left join /rightjoin的關係
答: 內連線是左右連線的交集
1 女生左連結 中本來有的屌絲->null 沒有了
2 男生左連結 中本來有的寶釵 ->null 沒有了
內連線是左右連線的交集
經典左連結面試題
按以上的形式查詢
A left join B on 條件
這一塊,形成的也是一個結果集,可以看成一張表 設為C
既如此,可以對C表作查詢,自然where,group ,having ,order by ,limit
可以無限左連結 並且可以把它看成一個表 然後進行having 篩選