Db2 ビュー

ビュー とは、1 つ以上の基本表内に存在するデータを別の形で表現するための方法です。 ビューには、1 つ以上の基本表からすべての列を含めることも、列の一部のみを含めることもできます。

ビューとは、結果表の指定に名前を付けたものです。 概念的に、ビューの作成は双眼鏡を使用するのに似ています。 双眼鏡を使用すると、景色全体を見たり、景色の中にある特定のイメージ (木など) を見ることができます。

Db2 ビューを作成して、以下の目標を達成することができます

  • さまざまな基本表のデータを結合します
  • 他のビューまたはビューとテーブルの組み合わせに基づく
  • 一部のデータを省略することで、一部のテーブルデータをユーザーから隠す

実際、上記はなぜビューを使用するかを表す、一般的で基礎を成す理由です。 基本表とビューの情報を結合するとユーザーがデータを取り出すのが容易になり、 ユーザーが表示できるデータを制限するとセキュリティーに役立ちます。 多くの異なる目的でビューを使用することができます。 ビューは以下を実行できます。

  • 表へのアクセスを制御する
  • データを使用しやすくする
  • 表へのアクセス権を付与しないでビューへのアクセス権を付与することにより、許可を単純化する
  • 表内のデータの一部のみを表示する
  • 所定の表のサマリー・データを表示する
  • 複数の表を意味のある方法で結合する
  • 選択された行だけを表示します。この選択された行は、ビューを使用する処理にだけ関係するものです。

Db2 のビューでデータにアクセスする方法

ビューの情報を取り出したり、情報にアクセスするには、基本表と同じようにビューを使用します。 SELECT ステートメントを使用して、ビューの情報を表示することができます。 SELECT ステートメントは、他のビューおよび表の名前を指定でき、また WHERE、GROUP BY、および HAVING 文節を使用できます。 ORDER BY 文節の使用やホスト変数の指定はできません。

挿入、更新、または削除の操作でビューが使用されるかどうかは、その定義により異なります。 例えば、ビューに、その基本表の外部キーが含まれている場合、そのビューを使用する INSERT および UPDATE 操作は、基本表と同じ参照制約に従います。 同様に、ビューの基本表が親表である場合、そのビューを使用する DELETE 操作は、基本表に対する DELETE 操作と同じ規則に従います。 読み取り専用 ビューは、挿入、更新、および削除の操作には使用できません。

Db2 ビューを作成する方法

ビューを定義するには、CREATE VIEW ステートメントを使用してビューに名前 (最大 128 文字の長さ) を割り当てます。 他の SQL ステートメントでビューを指定するのは、事実上、SQL SELECT ステートメントを実行するのと似ています。 ビューは、常に、SELECT ステートメントを実行した場合の結果の行から構成されます。 ビューは、ビューが定義された基本表と同じような列と行があるものとして考えられます。

特定の制限に従えば、ビューの期間の仕様を指定することもできます。

Db2 ビューの作成例

汎用プログラミングインターフェース情報の開始。
例 1
次の図は、機密扱いの従業員情報を除去して、一部の列を名前変更した EMP 表のビューを示しています。
図1: EMP 表のビュー
図の説明の開始 この図は、基本表の列名の EMP、および EMP 基本表に基づいているビューの列名の EMPINFO を示しています。 図の説明の終わり。
図の注釈 :EMPFINFOビューは、EMPLOYEE、FIRSTNAME、LASTNAME、TEAM、およびJOBTITLEという名前の列を含むテーブルを表します。 このビューのデータは、EMP 表の EMPNO 列、FIRSTNME 列、LASTNAME 列、DEPT 列、および JOB 列から取り出されます。
例 2
次の CREATE VIEW ステートメントは、上図に示される EMPINFO ビューを定義します。
CREATE VIEW EMPINFO (EMPLOYEE, FIRSTNAME, LASTNAME, TEAM, JOBTITLE)
  AS SELECT EMPNO, FIRSTNME, LASTNAME, DEPT, JOB
  FROM EMP;

ビューを定義すると、 Db2 はビューの定義を Db2 カタログに保存します。 しかし、 Db2 はビュー自体のデータを保存しません。なぜなら、データはベーステーブルまたはテーブルに存在するからです。

例 3
次のように内容を部門 A00 および C01 のみを含む行と列のサブセットに制限することによって、EMPINFO ビューの有効範囲を絞り込みます。
CREATE VIEW EMPINFO (EMPLOYEE, FIRSTNAME, LASTNAME, TEAM, JOBTITLE)
  AS SELECT EMPNO, FIRSTNME, LASTNAME, WORKDEPT, JOB               
  FROM EMP                                                         
  WHERE WORKDEPT = 'A00' OR WORKDEPT = 'C01';
汎用プログラミングインターフェース情報の終了。

一般的に、ビューは、派生元のオブジェクトの属性を継承します。 表についてビューが定義された後にその表に追加された列は、ビューに表示されません。

制限事項 :ビューに対してインデックスを作成することはできません。 また、ビューでいかなる形式のキーまたは制約 (参照など) を作成することもできません。 これらの索引、キー、または制約は、ビューが参照する表で作成する必要があります。