FROM 句は、SELECT 文に対して、1 つ以上のソーステーブルを指定します

構文

FROM source [, ...]

次の表では、source に設定できるパラメーターを説明します。

パラメーター 説明 
table_name[@dblink ] 既存のテーブルまたはビューの名前。 名前はスキーマで修飾できます。リモートデータベースを識別するデータベースリンク名はdblink です。 データベースリンクの詳細については、CREATE DATABASE LINK コマンドのページをご参照ください。
alias エイリアスを含む FROM 句内の項目の代替名。 エイリアスは、指定を簡潔化するため、または自己結合 (同じテーブルが複数回スキャンされる場合) の曖昧さをなくすために使われます。 テーブルまたは関数のエイリアスを指定すると、テーブルまたは関数の実際の名前が隠されます。 たとえば、FROM foo AS f を指定すると、SELECT 文の残りの部分では FROM 句の項目を foo ではなく、 f として参照する必要があります。
select FROM 句で、SELECT 文をネストすることができます。 これにより、SELECT 文の実行中に派生テーブルが作成されます。 ネストされたSELECT 文は括弧で囲み、エイリアスを指定する必要があります。
join_type 次の結合タイプを使用可能です。
  • [ INNNER ] JOIN
  • LEFT [ OUTER ] JOIN
  • RIGHT [ OUTER ] JOIN
  • FULL [ OUTER ] JOIN
  • CROSS JOIN

INNER および OUTER 結合タイプでは、結合条件を指定する必要があります。 結合条件は NATURALON join_condition、または USING (join_column [, ...] ) のいずれかです。 次の段落では、結合タイプについて説明します。 CROSS JOIN では、これらの句は表示されません。

JOIN 句は、2 つの FROM 項目を結合します。 括弧を使用して、ネストの順序を決定できます。 括弧が使用されていない場合、JOIN 句は左から右にネストします。 JOIN 句は、FROM 項目をコンマで区切るよりも、強く結合できます。

CROSS JOIN および INNER JOIN は、単純なデカルト積を生成します。 結果は FROM の最上位レベルで 2 つのテーブルをリストした場合と同じですが、結合条件によって制限されます。 CROSS JOIN は、 INNER JOIN ON (TRUE) と同じです。 条件によって行が削除されることはありません。 これらの結合タイプは、表記上の便宜のために用意されてます。 FROM および WHERE 句を使用して、結合タイプを使用して行えるすべての操作を実行できます。

LEFT OUTER JOIN は条件に合うデカルト積のすべての行を返します。 条件に合うデカルト積には、結合条件を満たすすべての行の組み合わせが含まれます。 また、LEFT OUTER JOIN は、一致する右側の行がない左側の行も返します。 一致する右側の行がない左側の各行には、右側の列に null 値を挿入することで、結合テーブルが全幅に拡張されます。 行が一致するかどうかが判断される際に考慮されるのは、JOIN 句の条件のみであることにご注意ください。 次に、外部条件が適用されます。

RIGHT OUTER JOIN は、すべての一致する行と、一致する左側の行がない右側の行を返します。 右側の各行は拡張され、左側に null 値が表示されます。 これは表記上の便宜的なものです。 左右の入力内容を切り替えることにより、LEFT OUTER JOIN に変換できます。

FULL OUTER JOIN は、すべての一致する行を返し、一致しない左側の行ごとに 1 行、一致しない右側の行ごとに 1 行を返します。 左側の行が拡張され、右側に null 値が表示されます。 右側の行が拡張され、左側に null 値が表示されます。

ON join_condition join_conditionは、 結合内でどの行が一致するとみなされるかを指定する、BOOLEAN 型 (WHERE 句に類似) の値をもたらす式です。
USING (join_column [, ...] ) USING (a, b, ... ) 句は、ON left_table.a = right_table.a AND left_table.b = right_table.b ... の略です。 加えて、USING は、同等の列の各ペアのうちの 1 つだけが結合出力に含まれることを表します。
NATURAL NATURAL は、同じ名前を持つ 2 つのテーブルのすべての列を記載する USING リストの略です。

複数のソースが指定されている場合、結果はすべてのソースのデカルト積 (クロス結合) になります。 ほとんどの場合、制約条件を追加して、返される行をデカルト積の小さなサブセットに限定します。

次の例では、dept テーブルからすべてのエントリを選択します。

SELECT * FROM dept;
deptno |  dname      |  loc
-------+-------------+-----------
    10 |  ACCOUNTING |  NEW YORK
    20 |  RESEARCH   |  DALLAS
    30 |  SALES      |  CHICAGO
    40 | OPERATIONS  |  BOSTON
 (4 rows)