SELECT ステートメントの動作
SELECT を含む SQL ステートメントは、論理順序に実行されるよう SQL によって定義された一連の節で構成されます。 SELECT ステートメントを使用すると、ユーザーは、指定の表から取り出す情報を定義して編成できます。
以下の文節リストには、ステートメントにおける文節の論理順序が記載されています。
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
さらに、以下の制限があります。
- 副選択 は最内部から最外部の副選択へと処理されます。 別 SQL ステートメントの WHERE 文節または HAVING 文節にある副選択は、副照会 と呼ばれます。
- ORDER BY 文節は、副選択、全選択、または SELECT ステートメントに入れることができます。
- AS 文節を使用して最外部の SELECT 文節で名前を定義する場合、ORDER BY 文節だけがその名前を参照できます。 副選択の中で AS 文節を使用すると、副選択の外部で定義した名前を参照することができます。
例
- 例: 無効な SELECT ステートメント
- 間違った SELECT ステートメントを以下に取り上げます。
SELECT EMPNO, (SALARY + COMM) AS TOTAL_SAL FROM EMP WHERE TOTAL_SAL> 50000;WHERE句は有効ではありません。なぜなら、 Db2 はWHERE句が処理されるまで、ステートメントのAS TOTAL_SAL部分を処理しないからです。 したがって、 Db2 はAS句で定義されたTOTAL_SALという名前を認識しません。
- 例:
- ただし、ORDER BY 節は AS 節が定義する列名 TOTAL_SAL を参照するため、以下の SELECT ステートメントは有効です:
SELECT EMPNO, (SALARY + COMM) AS TOTAL_SAL FROM EMP ORDER BY TOTAL_SAL;