第8章 表の結合について
8.1 表の結合とは
■Oracle構文
Oracle構文ではWhere句で、検索条件だけでなく表の結合もできる。
[表]表結合のOracle構文一覧(一部省略)
| 左外部結合文 |
SELECT .. FROM 表名A,表名B WHERE 表名A.列名(+) = 表名B.列名; |
| 右外部結合文 |
SELECT .. FROM 表名A,表名B WHERE 表名A.列名 = 表名B.列名(+); |
■SQL1999構文(1999年6月に採用されたSQL規格のこと)
※こちらについては後程説明します。
■表別名について
SQL文を見やすくするために使用します。
列を修飾する表名を、表名を使用したり、表別名を使用したりと自由に選択することはできません。
■外部結合について
表結合では、結合条件を満たすデータを取り出しますが、結合条件を満たさないデータが必要になる場合。
・外部結合→結合条件を満たさないデータを取り出します結合
・右、左外部結合→結合条件を満たさないデータを取り出す表により・・・。
・完全外部結合→結合条件を満たすデータだけでなく、結合条件を満たさない2つのデータを取り出す結合。
8.2 SQL:1999構文の表の結合
○自然結合文
| 構文:SELECT .. FROM 表名A NATURAL JOIN 表名B [WHERE 検索条件]; |
説明
・2つの表の同じ名前の列が等しい値の行を取り出します。
・結合する列のデータ型は同じでなければならない。
・結合で使用する列をSELECT句やWHERE句等で使用する場合には、表名または表別名を付けません。
・2つの表に結合する同じ列名が存在しない場合、なにも選択されないだけで、エラーにはならない。
○等価結合文
| 構文:SELECT .. FROM 表名A JOIN 表名B USING(列名) [WHERE 検索条件]; |
説明:
・2つの表から指定列の等しい行を取り出します。
・USING句の列名には、表名または表別名をつけません。
○等価結合/非等価結合文
| 構文:SELECT .. FROM 表名A JOIN 表名B ON 結合条件 [{WHERE ┃ AND }検索条件]; |
説明:
・ON句で2つの表の結合条件を指定。
・結合する表に同じ列名がある場合には、表名又は表別名で修飾します。
・結合した表に検索条件の追加は、WHERE句又はAND句を指定。
○クロス結合文
| 構文:SELECT .. FROM 表名A CROSS JOIN 表名B; |
説明:
・デカルト積を戻す(交差結合とも呼び、2つの表の直積演算により行を取り出す)
○左外部結合文
| 構文:SELECT .. FROM 表名A LEFT OUTER JOIN 表名B ON 表名A.列名 = 表名B.列名 [WHERE 検索条件]; |
説明:
・2つの表で、指定列が一致する行だけでなく、表名Aの一致しない行も取り出します
・検索条件の指定はON句の後に、WHERE句を指定。
○右外部結合文
| 構文:SELECT .. FROM 表名A RIGHT OUTER JOIN 表名B ON 表名A.列名 = 表名B.列名 [WHERE 検索条件]; |
説明:
・2つの表で、指定列が一致する行だけでなく、表名Aの一致しない行も取り出します
○完全外部結合文
| 構文:SELECT .. FROM 表名A FULL OUTER JOIN 表名B ON 表名A.列名 = 表名B.列名 [WHERE 検索条件]; |
説明:
・2つの表で指定列が一致するだけでなく、一致しない列もあり。
○3つ以上の結合文
| 構文:SELECT ... FROM 表名 JOIN 表名B ON 結合条件 JOIN 表名C 結合条件 [{WHERE ┃ AND}検索条件]; |
説明:
・結合対象表を指定するJOIN句と結合するには指定するON句を指定して表を結合。
8.3 外部結合について
~実践のみなので省略です~
最終更新:2008年08月06日 10:40