Oracleのビュー(VIEW)とは

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)のまとめでした。

コメント