ビューについて
ビューとはSELECT文を格納しておく変数のようなものです。
プログラムを学んだ方ならしっくり来ると思うのですが、変数に格納しておくことで共通化をすることでいろいろな場面で簡単に呼び出すことができます。
作成構文
SQL> select * from test;
NO NAME
---------- --------------------------------------------------
1 aaaaa
2 ooooo
3 oooaa
2 ooooo
3 oooaa
SQL> create or replace view test_view as
2 select * from test;
View created.
SQL> select * from test_view;
NO NAME
---------- --------------------------------------------------
1 aaaaa
2 ooooo
3 oooaa
2 ooooo
3 oooaa
使用方法
SELECT文の共通化
ビューを作成することで、SELECT文の共通化を図ることができます。
システムの中で値を得る際にSELECT文を記述して値を取得するよりもSELECT文を格納したビューを呼び出すほうが効率が良く、記述ミスを防ぐことができます。
プログラムにおける変数と同等の扱いが可能ですね!
値を隠す
これは権限でもできる話なのですが、見られたくないデータを隠す際にもビューを使用することがあります。
例えば{社員名、年齢、性別、給与、持病}をもったテーブルがあると考えてください。
社員名や年齢、性別はデータを見られても問題ないのですが、給与や持病などのプライベートなデータは案件によっては隠したい場合があると思います。
そんなときに一般社員が業務に使用するデータとして{社員名、年齢、性別}をAビューに格納し、{社員名、年齢、性別、給与、持病}を格納したビューを管理者用にといった使い分けの方法があります。
マテリアライズドビュー
ビューには通常のビューとマテリアライズドビューの2種類のビューが存在します。
ビュー | ビュー作成時のデータしか取得できない。 |
マテリアライズドビュー | ビュー作成後も作成に使用したテーブルに更新があれば更新したテーブルの値を取得できる。 |
マテリアライズドビューはビューとテーブルが同期している状態をイメージしてほしいです。
同期していることによってビュー作成時に使用したテーブルに更新がかかればマテビューも同時に更新処理が行われます。
下記の場合では、テーブルにTRUNCATEを実行するとそのテーブルを参照して作成したマテビューも同時に更新されます。(マテビューの更新は自動の場合と手動の場合をCREATE時に指定することができます。)
SQL> create materialized view test_mat as
2 select * from test;
Materialized view created.
SQL> select * from test_mat;
NO NAME
---------- --------------------------------------------------
1 aaaaa
2 ooooo
3 oooaa
2 ooooo
3 oooaa
SQL> truncate table test;
Table truncated.
SQL> select * from test_mat;
no rows selected