

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢: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 就寝
内部結合と外部結合の違いを徹底解説
この章では、内部結合と外部結合の基本的な意味と使い道を、中学生にも分かる言葉で解説します。データベースの世界では、複数の表をつなげて新しい情報を作る作業を“結合”と呼びます。結合にはいくつかの種類がありますが、特に基本になるのが内部結合と外部結合です。内部結合(INNER JOIN)は、両方の表に“共通するデータ”が揃っている場合だけ新しい行を作ります。つまり、片方にしかデータがなければ結果には現れません。これを覚えておくと、探している情報がどの表にあるかを手掛かりに絞り込むのに役立ちます。
一方で外部結合(OUTER JOIN)は、共通データがない行も結果に含めることができます。特に LEFT OUTER JOIN は「左側の表のすべての行を残し、右側の表と結合できる部分だけ結びつける」動作をします。右外部結合はその逆、FULL OUTER JOINは両方の表の全部を一度に保ちつつ、結合できない場合は空欄(null)を埋めます。
この違いを実感するには、身近な例を思い浮かべると分かりやすいです。例えば、ある学校の生徒リストと担任のリストを混ぜて、担任がいない生徒をどう扱うかを考えるとイメージがつかみやすいです。
内部結合と外部結合は、どのような場面で使われるのか、どう選ぶべきかという判断にも直結します。もし「ある人がどの部署に所属しているか」を知りたいだけなら、部署テーブルと従業員テーブルの結合で、部署情報がある行だけを取り出す内部結合が適しています。これにより、未所属の人は結果から除外され、データがすっきりします。逆に「全員の名前と部署名を一覧にしたいが、部署に所属していない人も名前は出したい」という要件なら LEFT OUTER JOINを使います。未所属の人には部署名が現れない代わりに、その人の名前は必ず表示されます。
このような選択を間違えると、データの欠損が見えにくくなり、レポートの信頼性が落ちることがあります。例えば、売上と顧客リストを結合する際、顧客が過去に購買履歴を持っていなかった場合をどう扱うかで、分析結果が大きく変わることがあります。
結局のところ、INNERとOUTERの違いは「どのデータを必ず出すか」という設計の意思決定に直結しています。
結合の基本と用語
INNER JOIN は、2つの表の共通のキーが一致する行だけを取り出します。結合規則が厳格な分、データは欠けなく整合性が高くなります。対して LEFT OUTER JOIN は左の表の全ての行を保持し、右の表の一致する行があれば結びつけ、なければ NULL を埋めます。右外部結合はその逆、FULL OUTER JOIN は両方の表を網羅しますが、該当しない箇所には NULL が現れます。
このような仕様の違いを意識するだけで、SQL の結果セットが取り扱いやすくなります。特にデータベース設計を学ぶ途中の人には、INNERが“厳格な結合”、OUTERが“欠損を許容する結合”という感覚を持つと理解が早く進みます。
また、実務ではパフォーマンスの観点から、必要な結合だけを行うようクエリを組み立てる練習が欠かせません。データ量が増えると、INNER JOIN だけでも時間がかかる場面があります。
具体的なデータ例で理解を深める
では、実データに近い形で結合の動作を比べてみましょう。表Aは従業員とその部門ID、表Bは部門IDと部門名です。
以下のデータを用います。従業員: emp_id=1 name=山田 太郎 dept_id=10; 従業員: emp_id=2 name=佐藤 花子 dept_id=20; 従業員: emp_id=3 name=鈴木 一郎 dept_id=NULL; 部門: dept_id=10 dept_name=営業; 部門: dept_id=20 dept_name=開発。
結果のイメージを確認するため、まず INNER JOIN の結果を見てみましょう。以下の表は、従業員と部門を“共通する dept_id”で結合したときに現れる行だけを集めたものです。
次に LEFT OUTER JOIN の結果を見ます。左側の従業員リストをすべて残し、右側の部門情報と結びつけられた場合だけ dept_name を埋めます。データには dept_id が NULL の従業員もいますので、結果には NULL が現れます。
emp_id | name | dept_id | dept_name |
---|---|---|---|
1 | 山田 太郎 | 10 | 営業 |
2 | 佐藤 花子 | 20 | 開発 |
3 | 鈴木 一郎 | NULL | NULL |
このように、INNER JOIN は“共通する情報だけ”を取り出すのに適しており、LEFT OUTER JOIN は“欠損を持つデータも全体像として表示したい”ときに使います。FULL OUTER JOIN については、両方の表の情報を完全に網羅しますが、稀にデータの欠損処理が煩雑になることがあるため、使い所をよく考えることが大切です。
すべてを網羅できる FULL OUTER JOIN も場面によって有用です。データ設計の初期段階で、どの情報が欠けても全体像を壊さないようにするかを考えるときに役立ちます。
外部結合って、データをただつなぐだけじゃなく、現場の“つながり”をどう見せるかという視点が大切だよね。LEFT OUTER JOINを使えば、左側の表の全員を出しつつ、右側の情報がある場合だけ結びつけて表示できる。だから欠損があっても全体の意味が崩れず、読み手に伝わりやすい表現になるんだ。友達と会議のメモと出席簿を結ぶ感じで考えると、データの関係性が自然と見えてくるよ。