😎

SQL結合の基本: 内部結合と外部結合の違い

2023/08/29に公開

データベース操作の際に避けて通れないのがテーブル間の「結合」です。本記事では、SQLの結合方法である「内部結合」と「外部結合」の違いと使い方について詳しく解説します。

前提: テーブル構造

今回は以下の2つのテーブルを例に説明します。

  1. TableA: 従業員情報。employee_idnameを持つ。
  2. TableB: 従業員のスコア情報。employee_score_idがユニークなID、employee_idが従業員情報のリレーション、scoreがスコア。

TableA:

employee_id name
1 Alice
2 Bob
3 Carol

TableB:

employee_score_id employee_id score
101 1 100
102 2 85
103 4 95

内部結合 (INNER JOIN)

内部結合では、2つのテーブルに共通するデータのみを取得します。

SELECT A.employee_id, A.name, B.score
FROM TableA A
INNER JOIN TableB B ON A.employee_id = B.employee_id;

結果:

employee_id name score
1 Alice 100
2 Bob 85

左外部結合 (LEFT JOIN)

左側のテーブルを基準にして結合します。右側のテーブルに該当するデータがない場合は、その部分はNULLで表示されます。

SELECT A.employee_id, A.name, B.score
FROM TableA A
LEFT JOIN TableB B ON A.employee_id = B.employee_id;

結果:

employee_id name score
1 Alice 100
2 Bob 85
3 Carol NULL

右外部結合 (RIGHT JOIN)

右側のテーブルを基準にして結合します。左側のテーブルに該当するデータがない場合は、その部分はNULLで表示されます。

SELECT A.employee_id, A.name, B.score
FROM TableA A
RIGHT JOIN TableB B ON A.employee_id = B.employee_id;

結果:

employee_id name score
1 Alice 100
2 Bob 85
NULL NULL 95

完全外部結合 (FULL JOIN)

両テーブルのデータを全て表示し、該当するデータがない場合はNULLで表示します。

SELECT A.employee_id, A.name, B.score
FROM TableA A
FULL JOIN TableB B ON A.employee_id = B.employee_id;

結果:

employee_id name score
1 Alice 100
2 Bob 85
3 Carol NULL
NULL NULL 95

以上、SQLの内部結合と外部結合の基本についての解説でした。実際のデータベース操作では、これらの結合方法を適切に使い分けることで、効率的なデータ取得が可能になります。

Discussion