【DB】内部結合、外部結合とは?違いを図を用いて解説

DB

テーブルを操作するにあたって、テーブルの結合処理は避けて通れないものです。テーブルの結合といっても一筋縄にはいかず、さまざまな結合方法が存在します。

内部結合、左外部結合、完全外部結合…など、耳にしたこともあると思います。それらは実際どのような結合なんでしょうか。いざテーブルを結合するときにどの結合方法を使えばいいかの道しるべに本記事を書きます。

前提となるテーブル

以下、学生テーブルと学部マスタの2つのテーブルを仮定します。

学生テーブルと学部マスタ

この2つのテーブルを、学部IDで結合していきます。

内部結合

内部結合は、結合する両テーブルのキー項目に値が存在するレコードのみを結合する方法です。INNER JOINとも呼ばれます。

今回の場合は、両テーブルに存在する学部IDのレコードのみが抽出され、結合されます。

内部結合

両テーブルに存在する学部IDは1、2、4なので、3行分のレコードが抽出され、両テーブルのカラム(列)が結合されます。

外部結合

左外部結合

左外部結合とは、左側のテーブルを起点に右側のテーブルを結合する方法です。左側のテーブルのレコードは全て残って、それに該当する右側のレコードが結合されます。LEFT JOINとも呼ばれます。

キー項目の値が左側にしかないレコードには空白(NULL)が結合されます。

今回の場合が学生テーブルが左側に該当するので、これを起点に該当する学部マスタの値が結合されます。学部マスタに学部IDが8の値はないので、空白が結合されます。

また、左側のテーブルになくて右側のテーブルに存在するレコードは除外されます。

左外部結合

右外部結合

右外部結合は左外部結合の逆です。右側のテーブルを起点として、該当する左側のテーブルのレコードを結合します。RIGHT JOINとも呼ばれます。

学部マスタの全レコードに、該当する学生マスタのレコードが結合されています。このとき、右側のテーブルになくて左側のテーブルに存在するレコードは除外されます。例では、学生番号B0004のレコードは除外されています。

完全外部結合

両テーブルに存在する全てのレコードを保持するように結合するのが完全外部結合です。それぞれ対応がないレコードには空白(NULL)が結合されます。FULL OUTER JOINとも呼ばれます。

完全外部結合

DBについてより学ぶ

データベース、SQLについて、書籍を通してより深く知ることができます。ネットでも情報は手に入りますが、書籍も是非検討してみてください^^

まとめ

内部結合、外部結合の仕組みについて紹介しました。今回は簡単な例で紹介しましたが、実際の場面では複雑なテーブル構成の中からどのように結合するかを考える必要があります。また、結合方法を間違えると意図せずレコードを除外してしまうこともあるので、注意が必要です。

ではでは👋