ビューの作成と使用
ビューを使用すると、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')
このビューには以下のデータがあります。
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 文節を使用してビューを作成することもできます。