ビューの定義
ビューは、結果表の名前付き仕様です。 ビューを使用すれば、特定のデータにアクセスできるユーザーを制御したり、SQL ステートメントの作成を簡単にしたりすることができます。
このタスクについて
CREATE VIEW ステートメントを使用すると、表の場合と同様に、ビューを定義し、
そのビューに名前を付けることができます。 次のステートメントで作成されるビューには、 DSN8D10. DEPT テーブル内の部門データとともに各部門マネージャーの名前が表示されます。
CREATE VIEW VDEPTM AS
SELECT DEPTNO, MGRNO, LASTNAME, ADMRDEPT
FROM DSN8D10.DEPT, DSN8D10.EMP
WHERE DSN8D10.EMP.EMPNO = DSN8D10.DEPT.MGRNO;プログラムがビューによって定義されたデータにアクセスすると、Db2ビュー定義を使って、プログラムがSQLステートメントでアクセスできる行のセットを返します。
部門 D01 が管理する部門とその部門の管理職を調べるときは、次のステートメントを実行すれば、VDEPTM ビューから情報が返されます。
SELECT DEPTNO, LASTNAME
FROM VDEPTM
WHERE ADMRDEPT = 'DO1';ビューを作成するときに、SESSION_USER および CURRENT SQLID 特殊レジスター を、CREATE VIEW ステートメントで参照できます。 ビューを参照する場合、Db2 は、ビューの作成者ではなく、 SQL ステートメントのユーザーに属している SESSION_USER または CURRENT SQLID 特殊レジスターの値 ( SELECT、 UPDATE、 INSERT、または DELETE ) を使います。 言い換えれば、ビューの定義の中で特殊レジスターを参照するときは、その実行時の値が参照されます。
ビューに対して、一定の条件の下で、期間を指定できます。 また、アプリケーションの期間テンポラル表またはバイテンポラル表を参照するビューの場合は、ビューに対する更新または削除操作に対して期間節を指定できます。
ビュー内の列は、基本表内の ID 列である列に基づくことができます。 ビューでもこの
列は ID 列です。ただし、以下のいずれかの場合は、
ID 列になりません。
- その列がビュー内に複数回現れる
- ビューが複数の表の結合を基礎にしている
- ビューが複数の表の和集合を基礎にしている
- ビュー内のいずれかの列が ID 列を参照する式から導き出されている
ビューを使って、 ある種のデータ (例えば、給与情報など) へのアクセスを制限することができます。 代わりに、CREATE TABLE ステートメントの IMPLICITLY HIDDEN 文節を使用して、操作の対象にしない表の列を定義できます。
ビューは、以下のアクションに使用することもできます。
- 表のデータのサブセットだけを、アプリケーションで使用できるようにします。 例えば、従業員表に基づくビューには、 特定の部門のみに関する行が含まれることがあります。
- 複数の表から列を組み合わせ、組み合わされたデータをアプリケーションで使用できるように します。 1 つの表の値と別の表の値をマッチングする SELECT ステートメントを使用する ことにより、両方の表からのデータを表すビューが作成できます。 しかし、このタイプのビューから行えることは、 データの照会のみです。 複数の表を結合したビューを使用して、 データの更新、削除、または挿入を行うことはできません。
- 複数の表から行を組み合わせ、 この組み合わされたデータをアプリケーションで使用できるようにします。 UNION などのセット演算子によって結合された複数の副選択を使用して、複数の表からデータを提示するビューを作成できます。 しかし、このタイプのビューから行えることは、 データの照会のみです。 UNION 操作を含むビューを使用して、 データの更新、削除、または挿入を行うことはできません。
- 計算されたデータを表示し、結果のデータをアプリケーションで使用できるようにします。 そのようなデータは、SELECT ステートメント内で使用可能な 関数や操作によって計算できます。