前回
7. 複雑な問い合わせ
の観点ではビューはテーブルと同じである。両者の違いはテーブルの中には「実際のデータ」が保存され、ビューの中には
文が保存されている点が相違する。ビュー自体はデータを持たない。
- ビューを用いると必要なデータが複数のテーブルにまたがる場合などの複雑な集約を楽に行うことができる。
- 頻用する
文をビューにすることで使いまわすことができる。
- ビューを作るには
![]()
文を用いる。
- ビューには「
[tex:\mathrm{BY}句は使えない」「ビューに対する更新は不可能ではないものの制限がある」という2つの制約がある。
- ビューを削除するには
![]()
文を用いる。
7.1 ビューとテーブル
ビューはの観点ではテーブルと同じものである。実際
文においては相違しない。しかし実際にデータを保存しているか否かという点で相違する。
ビューは文そのものを呼び出して一時的に仮想テーブルを構成する。
7.2 ビューのメリット
ビューには3つのメリットがある。
- データを保存しないため、記憶装置の容量を節約できる。
- 頻繁に用いる
文を毎回書かなくとも使いまわすことができる。
- 元のテーブルと連動して最新状態へ自動的に更新される。
7.3 ビューの構成方法
ビューを作成するには
文を用いる。
CREATE VIEW ビュー名(<ビューの列名1>,<ビューの列名2>,……) AS <SELECT文>
文の列とビューの列は並び順で一致し、
文の最初の列はビューの1番目の列、
文の2番目の列は…、と一致する。ビューの列名はビュー名の後ろのリストで定義する。
7.4 ビューに対する検索
ビューを句に指定したときの検索は、
(1) | 最初にビューに定義された |
|
(2) | その結果に対して、ビューを |
という2段階を踏む。すなわちビューに対する検索では常に2つ以上の文を実行する。
ただしビューを重ねることは可能であるものの、パフォーマンス低下を招くため推奨しない。
7.5 ビューの制限事項
- ビュー定義で
![]()
句を用いることはできない。
- ビューでの更新は基本的にできない。ただしいくつかの条件を満たしていれば可能である。
7.5.1 ORDER BY句
ビューについても行に順序が与えられていない。そのため一部許容するDBMSは存在するものの、ほとんどでは許容しない。
7.5.2 ビューに対する更新
いくつかの条件を満たしていれば、や
、
などの更新系
を許容する。
(1) | ||
(2) | ||
(3) | ||
(4) |
しかし集約したビューは、元になるテーブルのデータとの整合が取れなくなるため、更新できない。
7.6 ビューを削除する
ビューを削除するには
文を用いる。
DROP VIEW ビュー名