今回はMySQLを使って、複数のテーブルのデータを結合する方法について学びましょう。これを「ジョイン(JOIN)」といいます。ジョインをマスターすると、データベースの力を十二分に引き出すことができます。
ジョインは、複数のテーブルのデータを1つにまとめるSQL文の機能です。例えば、「ユーザー」と「注文」のテーブルを結合して、どのユーザーがどんな注文をしたのかを一覧で見ることができます。
ジョインにはいくつか種類がありますが、今回は基本的な3つのジョインについて説明します。
INNER JOINは、2つのテーブルの中で共通する部分だけを結合します。例えば、ユーザーテーブルと注文テーブルの共通するユーザーIDの部分だけを結合します。
SELECT * FROM ユーザー
INNER JOIN 注文 ON ユーザー.id = 注文.ユーザーID;
LEFT JOINは、左側のテーブルの全てのデータと、右側のテーブルの共通する部分を結合します。共通するデータがない場合、右側のテーブルはNULL(値なし)になります。
SELECT * FROM ユーザー
LEFT JOIN 注文 ON ユーザー.id = 注文.ユーザーID;
RIGHT JOINは、右側のテーブルの全てのデータと、左側のテーブルの共通する部分を結合します。共通するデータがない場合、左側のテーブルはNULLになります。
SELECT * FROM 注文
RIGHT JOIN ユーザー ON 注文.ユーザーID = ユーザー.id;
ジョインを使うときに、以下のポイントを押さえておくと便利です。
長いテーブル名を書くのは面倒なので、短いエイリアスを使うとコードが見やすくなります。
SELECT * FROM ユーザー AS u
INNER JOIN 注文 AS o ON u.id = o.ユーザーID;
*(アスタリスク)を使うと全てのカラムを選んでしまいますが、必要なカラムだけを指定するとデータの取得が速くなりますし、見やすくもなります。
SELECT u.名前, o.商品名 FROM ユーザー AS u
INNER JOIN 注文 AS o ON u.id = o.ユーザーID;
以上でMySQLのジョインについての基本的な学習は完了です。これで、複数のテーブルのデータを簡単に結合できるようになりました。