テーブルまたはビューから行を取得します。

構文

SELECT [ optimizer_hint ] [ ALL | DISTINCT ]
  * | expression [ AS output_name ] [, ...]
  FROM from_item [, ...]
  [ WHERE condition ]
  [ [ START WITH start_expression ]
      CONNECT BY { PRIOR parent_expr = child_expr |
 child_expr = PRIOR parent_expr }
    [ ORDER SIBLINGS BY expression [ ASC | DESC ] [, ...] ] ]
  [ GROUP BY { expression | ROLLUP ( expr_list ) |
      CUBE ( expr_list ) | GROUPING SETS ( expr_list ) } [, ...]
      [ LEVEL ] ]
  [ HAVING condition [, ...] ]
  [ { UNION [ ALL ] | INTERSECT | MINUS } select ]
  [ ORDER BY expression [ ASC | DESC ] [, ...] ]
  [ FOR UPDATE [WAIT n|NOWAIT|SKIP LOCKED]]

from_item に対して、以下のオプションが利用できます。

 table_name[@dblink ] [ alias ]
  ( select ) alias
 from_item [ NATURAL ] join_type from_item
    [ ON join_condition | USING ( join_column [, ...] ) ]

説明

SELECT 行を使用して、1 つ以上のテーブルから行を取得できます。 SELECT の一般的な処理は次のとおりです。

  • FROM リストのすべての要素が計算されます。 FROM リストの各要素は、実際のテーブルまたは仮想テーブルです。 FROM リストで複数の要素を指定すると、指定された要素が交差結合されます。 詳細については、 FROM 句のページをご参照ください。
  • WHERE 句を指定すると、条件を満たさないすべての行が出力から削除されます。 詳細については、 WHERE 句のページをご参照ください。
  • GROUP BY 句を指定した場合、出力は 1 つ以上の値に一致する行のグループに分割されます。 HAVING 句を指定した場合、指定した条件を満たさないグループは、出力から削除されます。 詳細については、 GROUP BY 句および HAVING 句のページをご参照ください。
  • UNIONINTERSECT、および MINUS 演算子を使用して、複数の SELECT 行の出力を組み合わせ、単一の結果セットを作ることができます。 UNION 演算子は、結果セットの一方または両方にあるすべての行を返します。 INTERSECT 演算子は、両方の結果セットにあるすべての行を返します。 MINUS 演算子は、最初の結果セットにはあるが 2 番目の結果セットにはない行を返します。 上記の 3 つのケースではすべて、重複する行が削除されます。 UNION 演算子で ALL を指定した場合、重複する行は削除されません。 詳細については、UNION 句、INTERSECT 句、および MINUS 句のページをご参照ください。
  • 実際の出力行は、選択された各行に対して SELECT 出力式を使用して計算されます。 詳細については、 SELECTリストのページをご参照ください。
  • CONNECT BY 句は、階層関係を持つデータを選択するために使用されます。 このタイプのデータには、行の間に親子関係があります。 詳細については、 CONNECT BY 句のページをご参照ください。
  • ORDER BY 句を指定した場合、返された行は指定された順序でソートされます。 ORDER BY 句を指定しなかった場合、行はシステムが生成する最速の順序で返されます。 詳細については、 ORDER BY句のページをご参照ください。
  • DISTINCT は結果から重複行を削除します。 ALL は重複行を含むすべての候補行を返します。 デフォルト値は ALL です。 詳細については、 DISTINCT 句のページをご参照ください。
  • FOR UPDATE 句を使用すると、SELECT 行は、選択した行を同時更新に対してロックします。 詳細については、 FOR UPDATE 句のページをご参照ください。

値を読み取るには、テーブルに対する SELECT 権限が必要です。 FOR UPDATE 行を使用するには、UPDATE 権限が必要です。

パラメーター

パラメーター 説明
optimizer_hint オプティマイザへのコメント埋め込みヒント。 このパラメーターは、実行プランを選択するために使用されます。