結合の種類
内部結合: JOIN, INNER JOIN
結合条件を満たす行のみを結合。
結合できない行は表示しない。
【補足】JOINを使わない外部結合
SELECT *
FROM A, B
WHERE A.no = B.no
※WHEREに絞り込み条件も記述するため、結合条件がどれなのかわかりにくくなる。
外部結合
結合できない行も表示する。
左外部結合: LEFT JOIN, LEFT OUTER JOIN
左側のテーブルのデータを全て表示する。右外部結合: RIGHT JOIN, RIGHT OUTER JOIN
右側のテーブルのデータを全て表示する。完全外部結合: FULL JOIN, FULL OUTER JOIN
両側のテーブルのデータを全て表示する。
【補足】JOINを使わない左外部結合
SELECT *
FROM A, B
WHERE A.no = B.no(+)
なぜいろいろな結合があるのか
内部結合だけだと、下記の場合にデータが結合結果から消滅してしまう。
右側テーブルに結合相手のいない。
例:家計簿テーブル(左)に新しい費目IDがあるが、費目テーブル(右)の費目IDが更新されておらず、データがみつからない。結果に表示されない買い物記録が存在してしまう。左側テーブルの結合条件の列がNULL。