ビューの作成と使用

ビューを使用すると、1 つまたは複数の表内のデータにアクセスできます。 SELECT ステートメントを使用してビューを作成します。

例えば、すべての管理者の姓と所属部門だけを選択するビューを作成します。

     CREATE VIEW CORPDATA.EMP_MANAGERS FOR SYSTEM NAME EMPMANAGER AS
        SELECT LASTNAME, WORKDEPT FROM CORPDATA.EMPLOYEE
        WHERE JOB = 'MANAGER'
ビュー名 EMP_MANAGERS がシステム・オブジェクト名としては長すぎるため、FOR SYSTEM NAME 文節を使用してシステム名を提供できます。 この文節を追加しない場合には、システム・オブジェクトに対して EMP_M00001 のような名前が生成されます。

ビューを作成し終えたら、表と同じように SQL ステートメントの中で使用することができます。また、ビューを使用して、基礎となる表のデータを変更することもできます。以下の SELECT ステートメントは EMP_MANAGERS の内容を表示します。

     SELECT *
           FROM CORPDATA.EMP_MANAGERS

結果は次のとおりです。

LASTNAME WORKDEPT
THOMPSON B01
KWAN C01
GEYER E01
STERN D11
PULASKI D21
HENDERSON E11
SPENSER E21

選択リストに列以外の要素 (式、関数、定数、または特殊レジスターなど) が含まれていて、しかも列に名前を付けるために AS 文節が使用されていない場合には、ビューの列リストを指定する必要があります。次の例では、ビューの列は LASTNAME と YEARSOFSERVICE です。

     CREATE VIEW CORPDATA.EMP_YEARSOFSERVICE
         (LASTNAME, YEARSOFSERVICE) AS
        SELECT LASTNAME, YEAR (CURRENT DATE - HIREDATE)
        FROM CORPDATA.EMPLOYEE

このビューの照会の結果は現行の年が変わると変更されるので、ここでは含まれていません。

選択リスト内で AS 文節を使用してビューの列に名前を付けることによって、前述のビューを定義することもできます。例えば、次の通りです。

    CREATE VIEW CORPDATA.EMP_YEARSOFSERVICE AS
        SELECT LASTNAME,
                YEARS (CURRENT_DATE - HIREDATE) AS YEARSOFSERVICE
        FROM CORPDATA.EMPLOYEE

UNION キーワードを使用すると、2 つ以上の副選択を結合して 1 つのビューにすることができます。 例えば、次の通りです。

CREATE VIEW D11_EMPS_PROJECTS AS
  (SELECT EMPNO
     FROM CORPDATA.EMPLOYEE
     WHERE WORKDEPT = 'D11'
   UNION
   SELECT EMPNO
     FROM CORPDATA.EMPPROJACT
     WHERE PROJNO = 'MA2112' OR
        PROJNO = 'MA2113' OR
        PROJNO = 'AD3111')

このビューには以下のデータがあります。

表 1. UNION としてのビューの作成結果
EMPNO
000060
000150
000160
000170
000180
000190
000200
000210
000220
000230
000240
200170
200220

ビューは、CREATE VIEW ステートメントの実行時に有効な分類順序を使用して作成されます。 分類順序は、CREATE VIEW ステートメントの副選択におけるすべての文字か、 UCS-2 または UTF-16 グラフィック比較に適用されます。

ビューを介してデータを挿入または更新するときの検査レベルを指定するために、WITH CHECK OPTION 文節を使用してビューを作成することもできます。