データベースに対する要求にはさまざまなものがあり、必要となる表もさまざまです。しかし、必要だからといって同じような表をたくさん増やしていくことは、効率やパフォーマンスを考えるとあまり得策とはいえません。そこで、表を増やすことなく、多様な要求に応えるのが「ビュー」(View)です。ビューは仮想表とも呼ばれます。
ビューについて
ここまで解説した表は、データベース上に物理的に存在していました。実際のデータを、ビューと区別するために「実表」と呼ぶことがあります。そして、ビューはデータベース内には物理的に存在せず、ビューの定義が存在するだけです。この定義にしたがって、ユーザーに対して表からビューを作って、データを見せるようにしています。
ただし、ユーザーから見るとビューと実表の区別はつきません。そのため、実表であってもビューであっても同様に問合せ、更新、挿入といった処理を行うことができます。また、ビューを使う目的としては、データベース上の効率といったものだけでなく、次のような目的にも使うことができます。
- セキュリティ
- データの見せ方の変換
- プログラムの効率を上げる
セキュリティの管理のためにビューを用いるのは、ビューのもとになる表の中に重要な情報や変更されては困る情報などがあるときです。
このような場合には、ユーザーに対してビューのもとになる表へのアクセス権限を与えません。その代わりにビューを作成し、ビューへはアクセスが可能になるように設定します。このようにすると、ビューのもとになる表の必要な部分のみ閲覧、更新ができるように設定することができまます。
またデータの見せ方を変えるためにビューを使う場合には、もとのデータに対して何らかの処理をした結果をユーザーに見せたいときなどがあります。例えば、商品の単価が入っている表をもとに、消費税を考慮した価格を提供したい場合などに使います。
さらに、プログラムの効率をあげるために使うこともあります。非常に大きな表を扱うような場合、プログラムをすべてのデータを扱えるように考えなければならないので、かなり面倒になります。そんなときに、プログラムに必要な部分だけビューにすれば、プログラマが意識する列が少なくなり、プログラムの効率があがります。
このようにビューは、さまざまな目的で使うことができます。
ビューを作成する
ビューの作成には、CREATE VIEW文を用います。CREATE VIEW文の書式は次のようになります。
CREATE VIEW <ビュー名> (<列名1>[,列名2...]) AS
SELECT <列名A> [,列名2...] FROM <表名A>
WHERE <検索条件>;
商品コード | 商品名 | 商品単価 | 仕入先コード |
112 | 間違った地図 | 780 | 18 |
113 | 曲がった定規 | 500 | 18 |
115 | 固い枕 | 4500 | 22 |
118 | 座れない椅子 | 8800 | 36 |
表:企業マスタ
企業コード | 企業名 |
18 | 奇怪雑貨 |
22 | 不健康生活 |
36 | 無意味社 |
CREATE VIEW CVIEW (商品名,販売価格,メーカー) AS
SELECT 商品マスタ.商品名, 商品マスタ.商品価格,
企業マスタ.企業名
WHRE 商品マスタ.仕入先コード=企業マスタ.企業コード;
SQL文
SELECT * FROM CVIEW;
実行結果
商品名 | 販売価格 | メーカー |
間違った地図 | 780 | 奇怪雑貨 |
曲がった定規 | 500 | 奇怪雑貨 |
固い枕 | 4500 | 不健康生活 |
座れない椅子 | 8800 | 無意味社 |
ビューを削除する
作成したビューを削除するには、DROP VIEW文を用います。