2つのテーブルを結合をしたい時には、内部結合と外部結合の2つの方法があります。
名前が似ているけど、内部と外部で何が違うんだろう?
本記事を読むことで、次のことがわかります。
・左外部結合と右外部結合の違い
・結合するときのSQL
内部結合(INNER JOIN)
内部結合とは、2つの表を直積したあとに、選択(条件に合う行だけ抽出)する結合です。
直積というのは、2つの表を結合する方法の一つです。
例えば、A表とB表がある場合、A表の1レコードにつき、B表の全レコードを突き合わせるイメージです。
内部結合では、2つの表に結合キーの同じ値がある場合のみ、導出されます。
両方の表に値がないと、導出されないんだね
SELECT *
FROM 商品表, 購買管理表
商品表.商品ID INNER JOIN 購買管理表.商品ID
外部結合(OUTER JOIN)
外部結合では、結合相手の表に結合キーの同じ値が無くても、結合元の表に存在すれば導出されます。
内部結合とは違って、片方の表のレコードは、全て導出する方法だね。
どちらの表を全て導出するかを指定するには、次の方法が使えます。
左外部結合(LEFT OUTER JOIN)
左外部結合では、「LEFT OUTER JOIN」の左に記載した表を全て導出する結合方法です。
SELECT *
FROM 商品表 LEFT OUTER JOIN 購買管理表
ON 商品表.商品ID = 購買管理表.商品ID
右外部結合(RIGHT OUTER JOIN)
右外部結合では、「RIGHT OUTER JOIN」の右に記載した表を全て導出する結合方法です。
SELECT *
FROM 商品表 RIGHT OUTER JOIN 購買管理表
ON 商品表.商品ID = 購買管理表.商品ID
まとめ
間違えやすい「テーブル結合」について、理解が深まりましたか?
「結合」は関係演算と呼ばれる演算の一種です。
他の関係演算についても知りたい方は、こちらを御覧ください。