MySQL是當今互聯網領域使用最為廣泛的關系型數據庫之一,而在MySQL中,外連接(outer join)和內連接(inner join)是兩種非常重要的連接方式,它們能夠實現數據庫中不同表之間的數據聯合查詢操作。
外連接和內連接之間的主要區別在于參與連接的兩個表之間,如果是兩個表之間的匹配,屬于內連接。例如,我們需要從一個用戶表中查詢所有的用戶和所對應的訂單表中的訂單信息,這就是內連接的典型用例。
SELECT user.username,orders.order_id FROM user INNER JOIN orders ON user.user_id = orders.user_id;
這個查詢語句將會返回一個由用戶名稱(username)和訂單序號(order_id)組成的結果集。INNER JOIN關鍵詞表明這是一個內連接操作,它將查詢user表和orders表中那些user_id值相同的行。
與此不同的是,外連接將會基于一個表中的所有行來返回另外一個表中的匹配行。左外連接(left outer join)將會返回左邊表(在關鍵詞LEFT JOIN之前)中所有的信息,而右外連接(right outer join)則會返回右邊表中的所有信息。如果在某個表中沒有匹配的行,那么將會返回NULL值。
SELECT user.username,orders.order_id FROM user LEFT JOIN orders ON user.user_id = orders.user_id;
這個查詢語句將會返回一個由用戶名(username)和訂單序號(order_id)組成的結果集,擁有所有從user表中得到的行,另外,如果沒有一個來自orders表的匹配行,它將會返回一個NULL值。
最后,當需要進行幾個表的連接時,可以使用多個JOIN語句。關鍵詞INNER和OUTER可以用來指定是內連接還是外連接。
SELECT user.username, orders.order_id, orders.date
FROM user
INNER JOIN purchase ON user.user_id = purchase.user_id
INNER JOIN orders ON purchase.order_id = orders.order_id;
這個例子涉及了三個表之間的內連接操作,由于使用了INNER關鍵字,所以在查詢結果中僅含有那些在所有三個表中都能夠找到的所對應行。
上一篇mysql 外碼
下一篇mysql 外網不能訪問