

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
「完全外部結合・とは?」はSQLの話題で、データベースの表を結びつけて結果を取り出すときに使う用語です。初心者でも理解できるよう、身近な例とやさしい言葉で解説します。
完全外部結合の基本
完全外部結合は二つのテーブルの全ての行を取り出し、結合条件が一致する場合は値を並べ、一致しない場合にはもう一方のテーブルの列は NULL が入る結合のことを指します。日本語では「全外部結合」とも言われることがあります。
内側結合との違い
内側結合は結合条件が一致する行のみを出力します。対して完全外部結合は片方のテーブルにデータがあっても、もう一方に対応がなくても結果に現れます。
身近な例で考えよう
想像してみてください。学校の生徒リストとクラブ活動の参加データがあります。生徒リストには全員の名前が載っていますが、クラブに参加していない人もいます。完全外部結合は「全員の名前」と「クラブ名」を並べて表示します。参加していない生徒にはクラブ名のところが NULL になります。クラブに参加している人のうち、生徒リストに載っていない人がいた場合も同様に NULL が現れます。
実際のSQLのイメージ
以下は雰囲気をつかむための例です。実際のSQL文はDBMSにより少しずつ書き方が違いますが、基本の考え方は同じです。
SELECT A.id, A.name, B.club FROM Students AS A FULL OUTER JOIN Clubs AS B ON A.id = B.student_id;
表で理解する結合の結果
下の表は完全外部結合と他の結合の違いを比較したものです。ポイントは「結合条件に合わない場合にも全体としての行が出力される」という点です。
| ケース | 説明 |
|---|---|
| 完全外部結合 | 両方のテーブルのすべての行を結果に含め、対応する値がない場合は NULL が入る |
| 内部結合 | 結合条件が一致する行だけを結果に含める |
まとめとポイント
完全外部結合は、データの欠損を扱う場面で役立ちます。欠損をNULLで表示することにより、データベース上で「存在するが結びつく相手がいない」という情報をはっきりと表現できます。反対に、結合条件に完全に一致するデータだけを取り出したい場合は 内部結合 を使います。用途に応じて結合のタイプを選ぶことが大切です。
実用のヒント
初心者のうちは、まずは自分の使いたいデータがどのテーブルにあり、どの列を結びつけたいのかを紙に書いて整理すると良いです。そのうえでFULL OUTER JOIN、LEFT/RIGHT OUTER JOIN、INNER JOINの違いをイメージ図で比べてみると理解が深まります。
完全外部結合の同意語
- 完全外部結合
- SQLの結合の一種。テーブルAとテーブルBの両方の全行を結合し、対応する行がない場合は NULL で埋める。結果セットには両テーブルの全データが含まれる。
- 全外部結合
- 完全外部結合の別表記。意味は同じで、両方のテーブルの全行を返し、マッチしない側には NULL を埋める。
- フル外部結合
- 英語の FULL OUTER JOIN の和製表記。機能は完全外部結合と同じ。
- フルジョイン
- FULL JOIN の略称表記。場合によって FULL OUTER JOIN と同義として使われるが、環境によって表現が異なることがある。
- 全結合
- 教材や文章で FULL OUTER JOIN の意図を指して使われることがあるが、混同しやすいため文脈を確認する必要がある。
完全外部結合の対義語・反対語
- 内部結合
- 両方のテーブルに共通する結合条件に一致する行のみを結果に含める。完全外部結合が全行を対象とするのに対し、内部結合はマッチした行だけを取り扱う点が対義的。
- 左外部結合
- 左テーブルの全行を基準にして、右テーブルのマッチがない場合には右側をNULLで埋める。完全外部結合と比べると、左側の全行を必ず含む点は共通だが、右側の非マッチを常に含むわけではない点が対照的。
- 右外部結合
- 右テーブルの全行を基準にして、左テーブルのマッチがない場合には左側をNULLで埋める。完全外部結合と比べ、右側の全行を必ず含む点が特徴で、左側の非マッチを含まない点が対照的。
- 自然結合
- 共通カラムに基づく内部結合の一種。結合条件を自動で決めるため、条件を明示的に書かない場合の挙動が異なる。完全外部結合の意味とは異なるが、内部結合の派生形として対比されることがある。
完全外部結合の共起語
- 外部結合
- 結合条件が一致しない行も結果に含める結合の総称。左外部結合・右外部結合・完全外部結合などが含まれ、完全外部結合は両方のテーブルの全行を取り、結合条件が一致しない場合にはNULLで補完します。
- 左外部結合
- 左側のテーブルの全行を必ず結果に含め、右側の行は結合条件が一致すれば結合、一致しなければ右側はNULLで表示されます。
- 右外部結合
- 右側のテーブルの全行を必ず結果に含め、左側の行は結合条件が一致すれば結合、一致しなければ左側はNULLで表示されます。
- 内部結合
- 両方のテーブルで結合条件が一致する行だけを結果に返します。
- 自然結合
- 同じ名前の列を自動的に等価結合の条件として使う結合。複数列を同時に結合することがあり、予測が難しくなることもあります。
- クロス結合
- 二つのテーブルの全行の全組み合わせを作る結合。結果はデカルト積となり、行数が非常に増える点に注意します。
- デカルト積
- クロス結合と同義。条件なしで全組み合わせを作成する考え方。
- 結合条件
- JOINでどの列を結合に使うかを決める条件。ON句やUSING句などで表現します。
- ON句
- JOINの際に具体的な結合条件を指定する句。等価比較やその他の条件を記述します。
- USING句
- 共通の列名を使って自動的に結合条件を設定する指定。複数列がある場合に便利です。
- 結合キー
- 結合に用いる列(または列の組み合わせ)のこと。主キー・外部キーなどが該当します。
- NULL値
- 結合条件が一致しない側の値は結果にNULLとして表示されることが多いです。
- COALESCE関数
- NULLを受け取り、別の値で置換して返す関数。欠損値を扱うときに便利です。
- テーブルエイリアス
- 長いテーブル名を短い別名で書けるようにする機能。クエリを読みやすくします。
- 実行計画
- データベースが結合や検索をどう処理するかの手順(クエリの実行計画)。パフォーマンスに大きく影響します。
- インデックス
- 検索を高速化するデータ構造。結合の際のキー部分にインデックスがあるとパフォーマンスが向上します。
完全外部結合の関連用語
- 完全外部結合
- 2つの表の全行を結合し、結合キーが一致する行はそれぞれの列を結合した結果を返す。一致しないときは、もう一方の表の列が NULL で埋められる。
- 外部結合
- 左外部結合・右外部結合・完全外部結合を総称していう。いずれも片方の表の全行を結果に含める点が特徴。
- 左外部結合
- 左側の表の全行を結果に含め、右側の表の一致する行を結合。右側に一致がない場合は NULL。
- 右外部結合
- 右側の表の全行を結果に含め、左側の表の一致する行を結合。左側に一致がない場合は NULL。
- 内部結合
- 両方の表で結合キーが一致する行だけを結合して結果に含める。
- 自然結合
- 同名の列を自動的に結合条件として用いる結合。ON句を省略して実現することがある。
- 等価結合
- 結合条件が等号(=)で表される結合。多くの外部結合は等価結合として実現される。
- ON句
- 結合条件を明示的に指定する句。結合の対象となる列の対応を決定する。
- USING句
- 結合する2つの表で同名の列を共有する場合、同名列を自動的に結合条件として使う構文。
- クロス結合
- 条件なしで全行を組み合わせるデカルト積。結果行数が爆発する可能性がある。
- 結合条件
- 結合を成立させるための条件。ON句・USING句・自然結合の条件がこれに当たる。
- 結合キー
- 結合の基準となる列(複数列を組み合わせることもできる)。
- 結合列
- 結合に使用される列。主キーと外部キーの対応などを指すことが多い。
- NULL値
- 一致しない側の列は NULL で埋められる。完全外部結合では特に重要。
- 結果セット
- 結合操作の結果として得られる行の集合。
- 列の重複とエイリアス
- 結合結果に同名列が重複することがあり、衝突を避けるために別名を付けることがある。
- 実行計画
- データベースがジョインを実際にどう実行するかを決定する計画。
- ジョイン戦略
- ハッシュ結合・マージ結合・ネストループ結合など、結合を実行するアルゴリズムの総称。
- ハッシュ結合
- ハッシュテーブルを用いて結合キーが一致する行を探すアルゴリズム。
- マージ結合
- ソート済みのデータを前提に結合するアルゴリズムで、等価結合に適している。
- ネストループ結合
- 外部側の行を順次走査して結合条件を満たす行を探す古典的な方法。
- 外部キー制約
- 参照整合性を保つためのデータ制約。参照元と参照先の対応を保証。
- 参照整合性
- データの整合性を保つ概念。Foreign Key などで実現される。
- SQL標準の機能
- FULL OUTER JOIN はSQL標準の機能として定義されていることが多い。
- DBMSサポート状況
- DBMSによって完全外部結合の直接サポート状況は異なる。直接サポートするものもあれば、LEFT/RIGHTの組み合わせで実現する場合がある。



















