結合の解説(基本情報技術者シラバス用語)

目次

結合(JOIN)とは

結合とは、関係データベースにおいて、2つ以上の異なるテーブルを共通の列(キー)をキーにして繋ぎ合わせ、1つの大きな表としてデータを取り出すSQLの操作です。結合には、双方のテーブルに共通して存在するデータのみを結びつける「内部結合(INNER JOIN)」と、片方のテーブルのデータをすべて残しながらもう一方のテーブルのデータを繋ぎ(存在しない部分は空欄になる)「外部結合(LEFT/RIGHT OUTER JOIN)」などがあります。テーブルを適切に分割(正規化)して保存されたデータを、人間が見やすい形に組み立て直すために必須の処理です。

具体例

「社員ID、名前」が入った『社員テーブル』と、「社員ID、部署名」が入った『配属テーブル』を、共通する「社員ID」を使って内部結合する場合、以下のようにSQLを書くことで社員名と部署名が並んだリストを一度に取得できます。

SELECT employees.name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.employee_id = departments.employee_id;

もう少し詳しく

結合(JOIN)は、正規化によって細分化されたデータベースから、ビジネスや画面表示に必要な情報を復元するための極めて重要な演算操作です。主な結合方法には、以下の4つの種類があります。

1. 内部結合(INNER JOIN):結合する両方のテーブルにおいて、ON句で指定した結合条件(キーの値)が一致する行だけを結合して抽出します。一方のテーブルにしか存在しないデータは、結果のリストから除外されます。
2. 左外部結合(LEFT OUTER JOIN):結合条件に関わらず、FROM句で「左側」に記述したテーブルのデータをすべて出力します。右側のテーブルに一致するキーがない場合、右側テーブル由来の列には「NULL(空値)」が割り当てられます。例えば、全顧客のリストを出力し、注文履歴がない顧客の注文枠を空欄のまま表示させたい場合などに使います。
3. 右外部結合(RIGHT OUTER JOIN):左外部結合の逆で、FROM句で「右側(JOINの後)」に記述したテーブルのデータをすべて残し、左側のテーブルに一致するデータがない箇所をNULLにします。
4. 完全外部結合(FULL OUTER JOIN):両方のテーブルのデータをすべて残し、互いにキーが一致しない部分はそれぞれNULLとして出力します。
5. クロス結合(CROSS JOIN):別名「デカルト積(直積)」とも呼ばれ、結合条件を指定せず、2つのテーブルのすべての行の組み合わせ(総当たり)を出力します。例えば、10行のテーブルと5行のテーブルをクロス結合すると、50行の結果になります。

最も頻出するのは「内部結合」と「左外部結合」の使い分けです。実務では、売上データなどのトランザクションテーブル(左側)に、商品名や価格情報が入ったマスタテーブル(右側)を結合する際、マスタに登録されていないイレギュラーデータがあっても売上データを消失させないために、左外部結合が多用されます。

試験でのポイント

IT試験においては、内部結合と外部結合を実行した結果、最終的に出力される「行数」や「テーブルの内容(特にNULLの入り方)」を正しく推測できるかどうかが頻繁に問われます。

試験対策としての重要ポイントは以下の通りです。
・ON句による結合条件:結合を行うための基準となる列(主キーと外部キーの関係など)を「ON テーブルA.列名 = テーブルB.列名」のように指定することを理解しましょう。
・内部結合(INNER JOIN):条件が一致するもの「だけ」が残るため、一方にデータが欠けていれば結果の行数は元のテーブルより少なくなります。
・左外部結合(LEFT OUTER JOIN):左側のテーブルの行数は必ず維持され、右側にない部分はNULLになります。問題文で「片方のテーブルのデータをすべて出力し、もう一方にない値はNULLにする」といった説明があれば、左外部結合または右外部結合を選択します。

SQLの問題文として「LEFT OUTER JOIN」が提示され、実行結果の表のどのセルがNULL(空値)になるかを判定させる問題が多いため、図を描いて突き合わせる手順に慣れておきましょう。

関連する用語

結合操作を行う対象である「関係データベース(RDB)」や、データベース操作言語の「SQL」、結合結果を取得するための「SELECT文」が関連します。また、結合の前提となる「主キー」や「外部キー」、および結合の対比概念である、テーブルを分割して重複をなくす「正規化」も極めて重要な関連用語です。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ