外部結合と完全外部結合の違いを徹底解説:中学生にも伝わるSQL入門

  • このエントリーをはてなブックマークに追加
外部結合と完全外部結合の違いを徹底解説:中学生にも伝わるSQL入門
この記事を書いた人

中嶋悟

名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝


外部結合と完全外部結合の違いを徹底解説

外部結合とは、2つの表を結ぶときに、共通の列の値が一致する行だけを取り出すのではなく、一致しない行も結果に含める結合のことを指します。わかりやすく言うと「合わせて表示しつつ、欠けているデータもそのまま並べる」イメージです。
この考え方自体はデータベースの基礎としてとても重要で、学校の課題でもよく使われます。
外部結合には実務でよく使われる3つのタイプがあり、それぞれ取り出せる行の範囲が違います。まず大事なのは外部結合という大きなカテゴリーを理解することです。
具体的には、LEFT OUTER JOINRIGHT OUTER JOIN、そしてFULL OUTER JOINの3つです。三つとも「外部結合」ですが、どちら側のデータを優先するかがポイントになります。左を優先、右を優先、あるいは両方を優先する形で、NULLが現れる場面が変わります。
ここではまず全体像を掴み、次に各タイプの挙動と使いどころを順番に見ていきます。

基礎の整理

まず大前提として、LEFT OUTER JOINは「左の表の全行+右の表と一致する行」を取り出し、一致しない右側の列には NULL が入ります。反対にRIGHT OUTER JOINは「右の表の全行+左の表と一致する行」を取り、左側が NULLになる場合があります。
そしてFULL OUTER JOINは両方の表の全行を網羅します。つまり、左にも右にもマッチしない行がある場合、それらの列には NULL が入って結果セットに現れます。
この3つの違いを頭の中で整理するコツは、結合の対象を「どの表のデータを必ず取り出すか」に置くことです。左寄りか、右寄りか、両方か、を意識すると混乱が減ります。
実例として、次のような小さなデータを考えましょう。A表には id, name、B表には id, score があるとします。A.id が 1,2,3、B.id が 1,3 だとすると、LEFT OUTER JOINは A の全行を残し、B との一致がある行だけスコアを結び付け、2 には NULL が入ります。
同様に RIGHT OUTER JOIN は B の全行を残しますが、A に対応しない行があれば A の列には NULL が入ります。
FULL OUTER JOIN は A 側にも B 側にもマッチしない行を NULL で埋めつつ、両方の表の全行を取り出します。

完全外部結合の特徴と実務的ポイント

完全外部結合(FULL OUTER JOIN)は、データを「どちらの表にも現れなくなるデータはない」という前提で、両側の情報を可能な限り結びつけたいときに使います。データ統合や欠損データの可視化、複数のソースを組み合わせて全体像を把握したいときに便利です。実務では、右側だけにしかデータがないケースや左側だけにしかデータがないケースを一括で扱いたい場面で活躍します。
ただし、FULL OUTER JOIN は処理コストが高く、データベースによってはパフォーマンスに影響します。実務では、しばしば LEFT OUTER JOINRIGHT OUTER JOIN を組み合わせる方法や、UNION を使って同等の結果を得る工夫が必要になることもあります。
また、NULL の扱いに注意が必要です。結合結果に現れる NULL は「マッチしなかった」という意味を持つので、後続の集計やフィルタでは COALESCE などで実データの意味を取り戻す工夫が有効です。実際のSQL例としては、次のような形が基本です。
SELECT A.id, A.name, B.score FROM A FULL OUTER JOIN B ON A.id = B.id; という形で、A と B の両方の側を網羅します。しかし、データベースごとに構文が異なる場合があるため、環境に合わせた書き方を選ぶことが大切です。

ピックアップ解説

友だちとデータベースの話をしていて、完全外部結合って何だろうとつぶやいたとき、実は“左と右の両方の表を可能な限り取り出す”のがポイントだと気づいたんだ。ある日、二つの机の上に置いた名簿と成績表を並べて考えると、名前が載っていない生徒の欄がどう表示されるかで、左寄り/右寄り/全体の違いが見えてくる。そこで僕らは、COALESCE で NULL を埋める工夫や、実務での使いどころについて、そんな雑談を交えながら解説した。


ITの人気記事

ズームとズームワークプレイスの違いとは?初心者でもわかる徹底解説!
940viws
青写真と青焼きの違いとは?簡単解説でわかりやすく理解しよう!
808viws
「画素(ピクセル)とは何?解説と画像の違いをやさしく理解しよう」
691viws
CADデータとDXFデータの違いを徹底解説!初心者でもわかる使い分けのポイント
500viws
スター結線とデルタ結線の違いを徹底解説!初心者でも分かる電気の基本
489viws
HTTPとHTTPSの違いをわかりやすく解説!安全なネット利用のために知っておきたいポイント
444viws
インプレッション数とクリック数の違いを徹底解説 — CTRを上げるための基礎と落とし穴
389viws
IPアドレスとデフォルトゲートウェイの違いをわかりやすく解説!ネットワークの基本を理解しよう
377viws
モバイルデータ通信番号と電話番号の違いを徹底解説!初心者でもわかるスマホの基礎知識
372viws
API仕様書とIF仕様書の違いを徹底解説!初心者でもわかるポイントとは?
356viws
SSDとUSBメモリの違いを徹底解説!初心者でもわかる保存デバイスの選び方
343viws
RGBとVGAの違いを徹底解説!初心者にもわかりやすい映像信号の基礎知識
340viws
RGBとsRGBの違いって何?初心者でもわかる色の基本知識
339viws
インターフォンとインターホンの違いって何?わかりやすく解説!
313viws
USB充電器とアダプターの違いとは?初心者にもわかりやすく解説!
306viws
グロメットとコンジットの違いとは?わかりやすく解説!
299viws
5GとXi(クロッシィ)ってどう違うの?初心者にもわかりやすく解説!
294viws
通信線と電力線の違いとは?意外と知らない基本ポイントを徹底解説!
278viws
UPSと非常用電源の違いとは?初心者でもわかる電源設備の基礎知識
273viws
【保存版】webサイト名とページタイトルの違いとは?初心者でも簡単にわかる解説
263viws

新着記事

ITの関連記事