連表查詢
連表查詢通常分為內連接和外連接。內連接就是使用INNER JOIN進行連表查詢;而外連接又分為三種連接方式,分別是左連接(LEFT JOIN)、右連接(RIGHT JOIN)、全連接(FULL JOIN)。下來我們一起來看一下這幾種連接方式的區別及基礎用法。
內連接
INNER JOIN
INNER JOIN
將只會返回相匹配的元素項,即不會返回結果為NULL
的數據項。如下圖所示:
INNER JOIN查詢的兩張表(A、B)的共有的部分,查詢結果為null的記錄不會出現。
外連接
關鍵字OUTER
是可選擇的,取決於具體語言,在實現上它們都是遵循標准的
LEFT JOIN
關鍵字從左表(A)返回所有的行,即使右表(B)中沒有匹配。如果右表中沒有匹配,則結果為NULL。
簡單來說就是不管右表(B)有沒有匹配到,都會完全輸出左表(A)的所有記錄,只是當右表的內容沒有匹配到時,則將右表對應的字段的內容設置為NULL。
當然,對查詢的SQL語句稍加改動就可以實現只查詢A表中存在的記錄。比如說添加一個右表的key為NULL的篩選條件。
RIGHT JOIN
關鍵字從右表(B)返回所有的行,即使左表(A)中沒有匹配。如果左表(A)中沒有匹配,則結果為 NULL。
如左連接類似,不管左表(A)有沒有匹配到結果,都完全顯示右表(B)的所有記錄,將左表(A)沒有匹配到的字段值設為NULL。
當然,也可以進行簡單的篩選得到只有右表(B)存在的記錄,設置左表中的key是NULL。
FULL JOIN
關鍵字只要左表(A)和右表(B)其中一個表中存在匹配,則返回行。FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。
簡單來說就是只要兩張表(A、B)中任意一張表中存在匹配,則返回記錄,當然也可以簡單的篩選得到兩表中單獨存在的記錄。比例a.key is null or b.key is null。