データベースのビューとは?わかりやすく解説する!

Web技術
スポンサーリンク

ビューってなに?

VIEWのデータの更新ってできるの?

わかりやすく教えて欲しい!

こういった疑問にこたえます。

この記事を読めば
  • VIEWとは何かがわかる
  • VIEWを作成できるようになる

エンジニアの僕がわかりやすく解説します。

VIEWとは?

VIEWはテーブルとほぼ同じですが、実際のデータが保存されていないという特徴があります。

テーブルというのはデータがコンピュータ内の記憶装置(ハードディスク)に保存されています。

一方、VIEWはデータ自体は保存されておらず、SELECT文が保存されています。

VIEWからデータを取り出そうとする場合、VIEWは内部的にそのSELECT文を実行し一時的に仮想テーブルを作ります。

ビューを作成することのメリットは次の通りです。

ビューのメリット
  • 記憶装置の容量を節約できる
  • 一度作成したものを使いまわせる

VIEWの元になっているデータはテーブルにあるのでテーブルが更新されるとビューにも反映されます。

ビューの作り方

VIEWを作成するにはCREATE VIEW文を使います。

CREATE VIEW文の構文は次の通りです。

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

ASキーワード後にはSELECT文を記述します。

VIEWの列とSELECT文で指定した列の順は一致します。

例えば次のようなテーブルがあったとします。

shohin_idshohin_meishohin_bunruikakaku
‘0001’‘鉛筆’‘事務用品’100
‘0002’‘ボールペン’‘事務用品’100
‘0003’‘Tシャツ’‘衣類’1000
‘0004’‘鍋’‘キッチン用品’2000
‘0005‘包丁’‘キッチン用品’1500
‘0006’‘帽子’‘衣類’1500
商品テーブル

このテーブルからshohin_bunruiごとの合計kakakuを表示するビューを作成したいとすると次のようなCREATE VIEW文になります。

CREATE VIEW shohin_sum (shohin_bunrui, kakaku_sum)
AS
SELECT shohin_bunrui, SUM(kakaku) FROM shohin GROUP BY shohin_bunrui;

実行すると次のようなVIEWが作成されます。

shohin_bunruikakaku
‘事務用品’200
‘衣類’2500
‘キッチン用品”3500
shohin_sumビュー

ビューに対する検索

ビューからデータを取得する場合はSELECT文のFROM句にビューを指定します。

SELECT * FROM shohin_sum;

shohin_sumはビューなのでビューに定義されたSELECT文が実行された後に、その結果に対してもう一度SELECT文を実行します。

このようにビューに対してSELECTを行う場合は内部では複数回SQLが実行されます。

VIEWからVIEWを作成することも可能ですが、多段ビューにするとパフォーマンスの低下につながるので極力VIEWからVIEWを作成することは避けましょう。

ビューの更新

ビューは実際のデータを保持していないと述べました。

それではINSERT、DELETE、UPDATEといった更新系のSQLは実行できるのでしょうか?

これについてはビュー定義のSELECT文においていくつかの条件を満たしている場合ビューに対する更新が可能となっています。

代表的な条件を挙げると次のようなものがあります。

  • SELECT句にはDISTINCTが含まれていない
  • FROM句に含まれるテーブルが一つだけである
  • GROUP BY句を使用していない
  • HAVING句を使用していない

ビューの削除

ビューを削除するにはDROP VIEW文を使います。

DROP VIEW文の構文は次の通りです。

DROP VIEW <ビュー名>;

データベースのビューとは?まとめ

解説の内容をまとめます。

  • ビューは実際のデータが保存されていない
  • ビューにはSELECT文が保存されている
  • CREATE VIEW文でビューを作成する
  • DROP VIEW文でビューを削除する

以上、お疲れ様でした。

コメント

タイトルとURLをコピーしました