
SQLのJOIN入門:初心者のためのやさしい解説
JOINとは何か?
JOINは、SQLで複数のテーブルを結びつけて情報を取り出すための機能です。例えば、「顧客(customers)」テーブルと「注文(orders)」テーブルがあるとき、JOINを使うと「どの顧客がどんな注文をしたか」という情報を一度に取り出せます。
JOINは、テーブル同士を「結合」するイメージで理解するとよいでしょう。
主なJOINの種類
INNER JOIN
INNER JOINは、両方のテーブルで一致する情報だけを取り出します。
図で表すと:
テーブルA テーブルB
○ ○
○●○ ← → ○●○
○ ○
中央の●が、INNER JOINで取り出される部分です。
LEFT JOIN
LEFT JOINは、左側のテーブルの情報をすべて取り出し、右側のテーブルの情報は一致するものだけを取り出します。
図で表すと:
テーブルA テーブルB
●●● ← ○
●●● ← → ○●○
●●● ← ○
左側(テーブルA)の情報がすべて、右側(テーブルB)の情報は一致するものだけ取り出されます。
RIGHT JOIN
RIGHT JOINは、LEFT JOINの逆で、右側のテーブルの情報をすべて取り出します。
FULL JOIN
FULL JOINは、両方のテーブルの情報をすべて取り出します。
図で表すと:
テーブルA テーブルB
●●● ← → ●●●
●●● ← → ●●●
●●● ← → ●●●
両方のテーブルの情報がすべて取り出されます。
JOINの基本的な使い方
JOINの基本的な構文は以下のようになります:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;
例えば、顧客テーブル(customers)と注文テーブル(orders)を結合する場合:
SELECT customers.name, orders.product_name
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
この例では、customersテーブルとordersテーブルを顧客ID(customer_id)で結合し、顧客の名前(name)と注文した商品名(product_name)を取得しています。
より具体的な例を見てみましょう:
-- customersテーブル
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
-- ordersテーブル
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
product_name VARCHAR(100),
order_date DATE
);
-- データの挿入
INSERT INTO customers VALUES (1, 'John Doe', 'john@example.com');
INSERT INTO customers VALUES (2, 'Jane Smith', 'jane@example.com');
INSERT INTO orders VALUES (1, 1, 'Laptop', '2023-01-15');
INSERT INTO orders VALUES (2, 1, 'Mouse', '2023-02-20');
INSERT INTO orders VALUES (3, 2, 'Keyboard', '2023-03-10');
-- INNER JOINの例
SELECT customers.name, orders.product_name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
この例では、顧客の名前、注文した商品名、注文日を取得しています。
JOINを使う時の注意点
結合するカラムを正しく選ぶ: テーブル同士を結びつけるカラムは、通常、主キーや外部キーを使います。
JOINの種類を適切に選ぶ: 欲しい情報に応じて、INNER JOIN、LEFT JOINなどを使い分けます。
パフォーマンスに注意: 大きなテーブル同士をJOINすると、処理に時間がかかることがあります。
結果を確認する: JOINした結果、予想外のデータが出てくることがあります。必ず結果を確認しましょう。
まとめ
JOINは複数のテーブルを結びつける機能
主なJOINの種類は、INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN
JOINを使うときは、結合するカラムと、JOINの種類を適切に選ぶことが大切
大きなテーブルをJOINするときは、パフォーマンスに注意が必要
JOINは、データベースから必要な情報を取り出すための強力なツールです。基本を理解し、少しずつ練習していくことで、複雑なデータ操作もできるようになります。