Oracleのビュー(VIEW)
Oracleのビューはテーブルを整形できる便利なオブジェクトです。そしてテーブルと同じように使用することができます。
ただし、テーブルのようにデータを保持しているわけではありません。ビューはあくまで疑似テーブルです。
ビューの使い方
例えば、テーブルA・テーブルB・テーブルCを結合して使用する場合があるとします。それも使用頻度は高くて、よく使う場合。この場合、使用する際に毎回結合したSQLを書くのは面倒です。
なので、テーブルA・テーブルB・テーブルCを結合したビューDを作ります。
ビューはテーブルと同じようにSELECTができるので、そのままビューDをSELECTするだけで使えます。長い結合SQLを書く必要がありません。
このように面倒な作業を省くことができるのがビューの特徴の1つです。
テーブルの例
- EMPテーブル:{EMP_NO、EMP_NAME、DEP_NO、POS_NO}
- DEPテーブル:{DEP_NO、DEP_NAME}
- POSテーブル:{POS_NO、POS_NAME}
EMPテーブルは従業員のテーブル。DEPが部署のテーブルです。POSは役職のテーブルです。
従業員、部署名、役職名をSELECTする場合は、通常この3テーブルを結合します。使用するたびにこの3テーブルを結合すればいいのですが、ちょっと面倒です。この例では単純なテーブル構成でしたが、実際にはもっと複雑ですね。
そんなときにビューの出番です。
ビューの例
EDPビュー:{EMP_NO、EMP_NAME、DEP_NO、DEP_NAME、POS_NO、POS_NAME}
EDPビューを新規に作ります。このEDPビューは3つのテーブルの列をすべて含めています。
ビューとテーブルのSQL比較
-- 3テーブルをSELECTする SELECT emp_no, emp_nam, e.dep_no, dep_name, e.pos_no, pos_name FROM emp e LEFT JOIN dep d ON e.dep_no = d.dep_no LEFT JOIN pos p ON e.pos_no = p.pos_no ORDER BY emp_no;
前述の3テーブルを結合したSQLはこちらです。このような単純なテーブル構成でもそこそこ長くなってしまいます。実際のテーブルだとしたら・・・列も多くテーブルももっと多いケースがほとんど。かなり長くなるのがわかります。
それではビューを作ってみます。
-- ビューを作成する CREATE OR REPLACE VIEW vEdp AS SELECT emp_no, emp_nam, e.dep_no, dep_name, e.pos_no, pos_name FROM emp e LEFT JOIN dep d ON e.dep_no = d.dep_no LEFT JOIN pos p ON e.pos_no = p.pos_no ORDER BY emp_no;
ビューのSQLの説明はこちらを参照してください。
それではビューをSELECTします。
-- ビューをSELECTする SELECT emp_no, emp_nam, e.dep_no, dep_name, e.pos_no, pos_name FROM vEdp;
3つのテーブルを結合したSQLと比較すると、ビューにした場合はコード量がかなり減りました。このように簡単に扱えて便利なのがビューです。
Oracleのビュー(View)のまとめ
- Oracleのビューはテーブルのように扱える
- ビューはデータを保持していない
- 使用頻度が高い&複雑で長いSQLであればビューを検討してみる
以上、Oracleのビュー(VIEW)のまとめでした。
コメント