MySQL -テーブルの結合-
リレーショナルデータベースは、「正規化」という作業を行ない、いくつかのテーブルに分割して管理することが一般的です、
そして、分割されたテーブルをもう一度、キーどうしで関連付けて1つのデータに統合していくことが結合という処理です。
内部結合
内部結合とは、テーブル間の主キー、外部キーを紐付け、キーどうしの値が一致するデータだけを取得する結合のことです。
内部結合を行うには、INNER JOIN ~ ON句を使用します。
SELECT 列名1… FROM テーブル名1
INNER JOIN テーブル2
ON テーブル名1.キー = テーブル名2.キー
[WHERE/ORDER BY句など…];
結合を行う場合、フィールド名はどのテーブルに属するものなのかを明確にするため
「テーブル名.フィールド名」の 形式で記述することが一般的です。
外部結合
結合するテーブル「双方」に存在するデータだけを取得する内部結合に対して、外部結合を 利用することで、「結合する」片方のテーブルにしか存在しないデータを 取り出すことができます。
外部結合には、左外部結合と右外部結合があります。
左外部結合
左外部結合とは、両テーブルでキーが一致するレコードと左テーブル(テーブル名1)の全レコードが取得できます。
左外部結合を行うには、LEFT OUTER JOIN ~ ON句を使用します。
SELECT 列名1,列名2… FROM テーブル名1
LEFT OUTER JOIN テーブル2
ON テーブル名1.キー = テーブル名2.キー
[WHERE/ORDER BY句など…];
右外部結合
右外部結合とは、両テーブルでキーが一致するレコードと右テーブル(テーブル名2)の 全レコードが取得できます。
右外部結合を行うには、RIGHT OUTER JOIN ~ ON句を使用します。
SELECT 列名1,列名2… FROM テーブル名1
RIGHT OUTER JOIN テーブル2
ON テーブル名1.キー = テーブル名2.キー
[WHERE/ORDER BY句など…];