ビュー

ビューとはSQLの観点から見るとテーブルと同じもの。テーブルなのかビューなのかを意識する必要はない。ビューとテーブルの違いは**「実際のデータを保存しているか否か」**だけである。 テーブルを作ってINSERT文でデータを格納するとデータベースにデータが保存される。(記憶装置、ハードディスク) ビューではデータを記憶装置に保存しない。どこにも保存せずにSELECT文そのものを実行して一時的に仮想テーブルを作っている。

ビューのメリット

① データを保存しないので記憶装置の容量を節約できる。

② 頻繁に使うSELECT文を毎回書かずに、ビューとして保存して置くことで使い回しができる。ビューが含むデータは本のテーブルと連動しているので自動で最新状態に更新されている。

ビューの作り方

CREATE VIEW文を使ってビューを作成する。CREATE VIEWの構文は下記のようになる。ASキーワードの後ろにはSELECT文を記述する。ビュー名の後ろにビューの列名をリストで定義する。SELECT文の最初の列はビューの1番目の列、となる。 ビューの定義にはどんなSELECT文も書くことができる。(WHERE、GROUP BY、HAVINGも使える)

CREATE VIEW ビュー名 (<ビューの列名1>, <ビューの列名2>, .....)
AS
<SELECT文>

実際にShohinテーブルのデータを用いてShohinSumという名前のビューを作ってみる。

postgres=# CREATE VIEW ShohinSum (shohin_bunrui, cnt_shohin)
postgres-# AS
postgres-# SELECT shohin_bunrui, COUNT(*)
postgres-# FROM Shohin
postgres-# GROUP BY shohin_bunrui;
CREATE VIEW

postgres=# SELECT shohin_bunrui, cnt_shohin
postgres-# FROM ShohinSum;
 shohin_bunrui | cnt_shohin 
---------------+------------
 キッチン用品  |          4
 衣服          |          2
 事務用品      |          2
(3 rows)

ビューに対する検索

ビューをFROM句に指定したときの検索は、まず最初にビューに定義されたSELECT文が実行される。そしてその結果に対して、ビューをFROM句に指定したSELECT文が実行される。このように2段階を踏む。ビューをもとにビューを作るということもできるけど推奨されていない。(パフォーマンス低下を招くから)

ビューの制限事項