結合
複数の表の異なる行を1行として表示することができる。
結合の種類
- 内部結合
- 外部結合
- クロス結合
内部結合
結合条件と一致する行のみを結果として返す。
ON句による内部結合
SELECT 列1, 列2, … FROM 表1 JOIN 表2 ON 表1.外部キー = 表2.主キー
- ON句に結合条件を記載する。
- あいまいな列には表接頭辞を修飾する。
NATURAL JOINによる内部結合
SELECT 列1, 列2, … FROM 表1 NATURAL JOIN 表2
- 2つの表で名前とデータ型が一致している列を結合列にする。
- 結合条件は等価結合となる
- 結合列は表名を修飾してはいけない
- 同じ名前の列が複数存在すると、それらすべてが結合に使用される。
- 意図しない結合が行われる可能性がある。
UING句による自然結合
SELECT 列1, 列2, … FROM 表1 JOIN 表2 USING(表1、表2に共通する列)
- 名前が同じでデータ型が違う列の場合はUSING句を使用する。
- 同じ名前、同じデータ型の列が複数あるが、特定の列のみを結合列として使用する。
NATURAL JOIN と USING の使い分け
- NATURAL JOIN は2つの表で同じ名前とデータ型を持つすべての列に基づく等価結合を行うときに使用する
- 名前が同じでデータ型が違う列の場合はUSING句を使用する。
NATURAL JOIN と USINGの注意
-
NATURAL JOIN USING のどちらも結合列に対して表接頭辞をしようしてはいけない(エラーになる)
⇒双方の表に存在す列だからこそ自然結合に使用されているため