※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

  • 6.1 SQL:1999準拠の結合構文
(1)3種類の結合
①クロス結合 (CROSS JOIN)
◆デカルト席を生成する結合。
◆結合条件は指定できない。
【例:CROSS JOIN句によるCROSS結合】
SELECT * FROM emp CROSS JOIN dept;

②内部結合([INNER] JOIN)
◆結合条件を指定する。
◆結合に合う行だけが結合して戻される。
【例:[INNER] JOIN句による内部結合(INNERは省略可能。通常は省略する)
SELECT * FROM emp JOIN DEPT ON (emp.deptno = dept.deptno);

③外部結合(LEFT | RIGHT OUTER JOIN)
◆結合条件を指定する。
◆条件に合わない行も戻すことができる。
◆左側外部結合、右側外部結合、完全外部結合の3種類がある。
【例:LEFT OUTER JOIN句による外部結合】
SELECT * FROM emp LEFT OUTER JOIN dept on (emp.deptno = dept.deptno);

(2)結合の指定方法(ON句と自然結合)
内部結合と外部結合では、ON句または自然結合を使い結合条件を指定する。
①ON句
◆任意の結合条件を指定する。行の選択条件も指定できる。(従来のOracle独自構文のWHERE句と同じ)
②自然結合
◆2つの表の同じ列名の列(共通列)に同じ値を持つ行を結合する。

(3)等価結合と非等価結合
◆等価結合・・・結合条件に等価演算子(=)を使うもの
◆非等価結合・・・等価演算子以外の演算子(BETWEENなど)を使うもの

(4)自己結合
◆1つの表をあたかも別の表であるかのように結合する。
◆表別名を指定して表を区別する。


  • 6.8 USING句
USING句を使い、自然結合に使用する列を限定することができる。
【USING句を使うのに適している場合】
  1. データ型が異なる共通列が存在する場合。(そのまま自然結合するとエラーになる)
  2. 共通列を使って自然結合すると不都合が生じる場合(共通列がNULL値であるなど)


  • 6.12 USING句
2つの表に共通列が複数存在する場合、全ての共通列で結合するならNATURAL JOIN句を使う。特定の列だけで結合したい場合、JOIN USING句を使う。
自然結合で結合される列を表修飾するとエラーになる!
【JOIN USING句の基本構文】
SELECT 列名, 列名 ・・・ FROM 表1
JOIN 表2 USING(列名);
(例)EMP表とDEPT表に複数共通列があり、そのうちDEPTNO列だけに限定して結合する場合
SELECT ename, deptno FROM emp JOIN dept USING(deptno);