[SQL実践入門]内部結合と外部結合のイメージ
更新日:2019.04.27
作成日:2015.06.10
内部結合と外部結合の「内部」と「外部」はどこから来ているのかクロス結合を元に説明している箇所を抜き出してまとめる。

クロス結合(Cross Join) すべての結合の母体
数学的には、直積、デカルト積と呼ばれる演算である。 結合対象となる2つのテーブルのレコードから可能なすべての組み合わせ網羅を行う演算。
内部結合(Inner Join)
何の内部?
内部とは「直積の部分集合」。
相関サブクエリとして書き換え可能だが、基本的に結合で記述できる限りは結合を選択するのがよい。
Why?
内部結合を相関サブクエリとして書き換えた場合、結果行数だけ相関サブクエリを実行するためコストが高くなる。
外部結合(Outer Join)
何の外部か?
外部とは、直積の部分集合にならないという意味である。
外部結合の結果には、マスタ側のテーブルだけに存在するキーがあった場合、そのキーを削除せずに、結果に保存するように動作する。
キーの値をすべて網羅するレイアウトのレポートを作成する場合に多用される。
感想
数年前は、外部結合の意味が全然分からず、Oracleでいうと(+)をつけておけばとりあえずいいんでしょうという理解しかなかったので、今思うと恐ろしい。
参考
Related contents

TECH
2015.06.01
[SQL実践入門]結合のアルゴリズム Nested Loops, Hash, Sort Merge

TECH
2014.12.24
達人に学ぶSQL, DB設計をぽちった

TECH
2015.08.07
正規化とは何か?

TECH
2016.05.29
MariaDBの日本語文字化けを解消するための設定

TECH
2013.10.02
索引設計についてのまとめ