カテゴリ: PostgreSQL 更新日: 2026/01/20

PostgreSQLのJOIN完全入門!INNER・LEFT・RIGHT JOINで学ぶテーブル結合の基本

PostgreSQLのJOINとは?テーブル結合の基本を解説
PostgreSQLのJOINとは?テーブル結合の基本を解説

先生と生徒の会話形式で理解しよう

生徒

「データベースの表がたくさんあると聞きましたが、別々の表はどうやって一緒に見るんですか?」

先生

「そのときに使うのがJOINです。JOINは、複数の表を横につなげて、一つの大きな表のように見るための仕組みです。」

生徒

「表をつなげるって難しそうです。パソコンが苦手でも分かりますか?」

先生

「大丈夫です。名簿と住所録を並べて見比べる感覚で説明します。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースという「情報を表の形で整理して保存する箱」に命令を出すための言葉です。紙の名簿を並べ替えたり、必要な行だけを抜き出したりする作業を、パソコンにお願いするための道具だと考えてください。

PostgreSQLは、このSQLを使って操作するデータベースソフトの一つで、無料で使えて信頼性が高いことで知られています。

2. テーブルとは何かを理解しよう

2. テーブルとは何かを理解しよう
2. テーブルとは何かを理解しよう

データベースの中身は「テーブル」と呼ばれる表で管理されています。テーブルは、縦が項目、横がデータです。学校の名簿で言うと、名前や年齢が項目で、一人ひとりの情報が横一列に並びます。

実際のシステムでは、情報を分かりやすく管理するために、表を一つにまとめず、役割ごとに分けて保存します。

3. JOINが必要になる理由

3. JOINが必要になる理由
3. JOINが必要になる理由

例えば「会員の情報」と「注文の情報」を一つの表に全部入れると、同じ名前やメールアドレスが何度も書かれてしまいます。これを防ぐために、表を分けて管理します。

ただし、分けたままだと情報が見づらくなります。そこでJOINを使って、必要なときだけ表をつなげて表示します。

4. サンプルとなるテーブルを確認しよう

4. サンプルとなるテーブルを確認しよう
4. サンプルとなるテーブルを確認しよう

まずは、二つのテーブルの中身を見てみます。


users テーブル
id | name       | age
---+------------+----
1  | 山田太郎   | 25
2  | 佐藤花子   | 19
3  | 鈴木一郎   | 30
4  | 高橋次郎   | 22

orders テーブル
id | user_id | item
---+---------+------
1  | 1       | 本
2  | 1       | ペン
3  | 2       | ノート
4  | 4       | 本

usersは会員名簿、ordersは購入履歴です。user_idが、どの人の注文かを示しています。

5. INNER JOINの基本

5. INNER JOINの基本
5. INNER JOINの基本

INNER JOINは「両方の表に共通して存在するデータだけ」を表示します。名簿と出席表を見比べて、両方に名前がある人だけを抜き出すイメージです。


SELECT users.name, orders.item
FROM users
INNER JOIN orders
ON users.id = orders.user_id;

name       | item
-----------+------
山田太郎   | 本
山田太郎   | ペン
佐藤花子   | ノート
高橋次郎   | 本

6. LEFT JOINとは何か

6. LEFT JOINとは何か
6. LEFT JOINとは何か

LEFT JOINは「左側の表を基準にして、右側の表をつなげる」方法です。右側に対応するデータがなくても、左側の情報は必ず表示されます。

これは、名簿に全員の名前を書き、注文がない人は空白のままにするイメージです。


SELECT users.name, orders.item
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;

name       | item
-----------+------
山田太郎   | 本
山田太郎   | ペン
佐藤花子   | ノート
鈴木一郎   |
高橋次郎   | 本

7. RIGHT JOINの考え方

7. RIGHT JOINの考え方
7. RIGHT JOINの考え方

RIGHT JOINは、LEFT JOINの反対で「右側の表を基準」にします。注文履歴を必ず表示し、会員情報がない場合でも注文は表示されます。


SELECT users.name, orders.item
FROM users
RIGHT JOIN orders
ON users.id = orders.user_id;

name       | item
-----------+------
山田太郎   | 本
山田太郎   | ペン
佐藤花子   | ノート
高橋次郎   | 本

8. JOINを使うときの注意点

8. JOINを使うときの注意点
8. JOINを使うときの注意点

JOINでは、どの列同士をつなげるかがとても重要です。今回はusers.idとorders.user_idを使いました。このような列を「関連づけるための番号」と考えると分かりやすいです。

また、JOINの種類によって表示される行が変わるため、「どの表を基準にしたいか」を意識することが大切です。

9. 日常生活で考えるJOINのイメージ

9. 日常生活で考えるJOINのイメージ
9. 日常生活で考えるJOINのイメージ

JOINは、名前が書かれた名簿と、買い物メモを机に並べて、同じ人の情報を横に並べる作業と同じです。INNER JOINは両方にある人だけ、LEFT JOINは名簿を優先、RIGHT JOINは買い物メモを優先します。

PostgreSQLのJOINを理解すると、バラバラに保存された情報を一度に見られるようになり、データベース操作が一気に楽になります。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方