【Oracle】結合(JOIN)の基本を理解する【過去問修行】

目標

このブログでは、Oracle Silver 資格取得を目指す方のために、過去問の解説やポイントを共有し、理解を深めることを目的としています。

勉強方法

  • 実際の過去問を解いて、現在の理解度を把握する。
  • 間違えた問題をチェックし、解説を通して理解を深める。
  • 理解した内容を実際のSQL環境で試してみる。
  • 類似問題を解くことで、知識を定着させる。

問題

次のうち、Oracle の JOIN 操作の特徴として誤っているものを選択してください。

選択肢

  • A. INNER JOIN は、両方のテーブルに一致するデータがある場合のみ結果を返す
  • B. LEFT JOIN は、左側のテーブルのデータをすべて含み、一致しない場合でも NULL を返す
  • C. FULL OUTER JOIN は、結合条件が一致しない場合でもすべての行を結果に含める
  • D. CROSS JOIN は、結合条件を指定しなくても共通カラムがある場合のみ結合される

正解

D. CROSS JOIN は、結合条件を指定しなくても共通カラムがある場合のみ結合される

解説

CROSS JOIN は、結合条件を指定しなくてもすべての組み合わせ(直積)を作成するため、共通カラムの有無に関係なく全レコードの組み合わせが結果に含まれます。

間違い選択肢の解説

  • 選択肢A: 正しい。INNER JOIN は、両方のテーブルで一致するデータのみ結果に含める。
  • 選択肢B: 正しい。LEFT JOIN は、左側のテーブルのデータをすべて含み、対応するデータがない場合は NULL を返す。
  • 選択肢C: 正しい。FULL OUTER JOIN は、一致しないデータも含める。

ポイント

  • INNER JOIN は、両テーブルに一致するデータがある場合のみ結果を返す。
  • LEFT JOIN は、左テーブルのすべてのデータを含み、一致しない場合は NULL を返す。
  • FULL OUTER JOIN は、一致する・しないにかかわらずすべてのデータを含める。
  • CROSS JOIN は、結合条件なしですべての組み合わせ(直積)を作成する。

実践例

-- CROSS JOIN の例
SELECT a.employee_id, b.department_name
FROM employees a
CROSS JOIN departments b;

まとめ

CROSS JOIN は、共通カラムがなくてもすべての組み合わせを返すため、誤解しないように注意が必要。


このブログは Oracle Silver 資格取得を目指す方向けに、過去問の解説やポイントを共有するためのものです。