表的連接在使用中是非常頻繁的,那么連接查詢的具體的邏輯有哪些呢?這些不同的連接又有什么區別呢?
1. 連接的分類 :
主要分為:內連接、外連接(左連接、右連接 、全連接)、交叉連接(笛卡爾積)
內連接(INNER JOIN):取兩表的交集
左外連接:左連接是查詢出左表的所有數據,右表中有對應的則顯示出來,沒有對應的則顯示為null;
右外連接:右連接的道理和左連接的道理類似,以右表為准,查詢出右表的所有數據,左表中有對應的則顯示出來,沒有對應的則顯示為null.;
全外連接:完全外連接是首先按照左邊的表進行遍歷,然后按照右邊的表進行遍歷,這樣的結果一定會出現同一行中,左面的表有值,而右邊的表是null,右面的表有值,而左面的表是null的現象啦。;
交叉連接:交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。相當於兩個表中的所有行進行排列組合。若表a有X行,表b有Y行,則將返回XY行記錄;
自然連接:自然連接是一種特殊的等值連接,自然連接無需指定連接列,SQL會檢查兩個表中是否相同名稱和類型的列,如果沒有則返回錯誤。它要求兩個關系中進行比較的分量必須是相同的屬性組,並且在結果中把重復的屬性列去掉;
聯合查詢(union join):是一種很少見的連接方式。Oracle、MySQL均不支持,作用是:找出全外連接和內連接之間差異的所有行。這在數據分析中排錯中比較常用。也可利用數據庫的集合操作來實現此功能;