連接查詢:
交叉連接:
交叉連接返回的結果是被連接的兩個表中所有數據行的笛卡爾積,也就是返回第一個表中符合查詢條件的數據航數乘以第二個表中符合,查詢條件的數據行數,例如department表中有4個部門,employee表中有4個員工,那么交叉連接的結果就有4 * 4 = 16條數據
SELECT * FROM 表1 CROSS JOIN 表2; SELECT * FROM 表1,表2;
從上述描述情況可以看出,交叉連接的結果就是兩個表中所有數據的組合。需要注意的是,在實際開發中這種業務需求是很少見的,一般不會使用交叉連接,而是使用具體的條件對數據進行有目的的查詢
內連接:
內連接(INNER JOIN)又稱簡單連接或自然連接,是一種常見的連接查詢。內連接使用比較運算符對兩個表中的數據進行比較,並列出與連接條件匹配的數據航,組合成新的記錄,也就是說在內連接查詢中,只有滿足條件的記錄才能出現在查詢結果中。
SELECT 查詢字段 FROM 表1 [INNER] JOIN 表2 ON 表1.關系字段 = 表2.關系字段;
在上述語法格式中,INNER JOIN用於連接兩個表,ON來指定連接條件,其中INNER可以省略。內連接其實還可以細分為如下兩類:
1.隱式內連接:顧名思義隱式的就是我們看不到inner join的關鍵字。而使用where關鍵字替代。
SELECT * FROM 表1,表2 where 表1.關系字段 = 表2.關系字段;
2.顯示內連接:顯示的就是在語句中明顯的調用了inner join的關鍵字
SELECT * FROM 表1 inner join 表2 on 表1.關系字段 = 表2.關系字段; SELECT * FROM 表1 join 表2 on 表1.關系字段 = 表2.關系字段;
外連接:
前面講解的內連接查詢中,返回的結果只包含符合查詢條件和連接條件的數據,然而有時還需要包含沒有關聯的數據,即返回查詢結果中不僅包含符合條件的數據,而且還包括左表(左連接或做外連接)、右表(右連接或右外連接)
或兩個表(全連接)中的所有數據,此時就需要使用外連接查詢,外連接分為左連接和右連接。
語法格式:
SELECT 所查字段 FROM 表1 LEFT|RIGHT [OUTER] JOIN 表2 ON 表1.關系字段 = 表2.關系字段 WHERE 條件;
外連接的語法格式和內連接類似,只不過使用的是LEFT JOIN、RIGHT JOIN關鍵字,其中關鍵字左邊的表被稱為左表,關鍵字右邊的表被稱為右表。