ビューの仕組みを図解で説明 〜データを持たない仮想の表〜

データベースの「ビュー」が何のためにあるのか説明できますか?

見た目は普通の表と同じなので、表とどう違うのか分かりにくいと思います。

ビューは、よく使う検索を名前を付けて保存しておく仕組みです。

ビューの仕組みと使いどころについて、図を使って説明していきます。

ビューの仕組みの図。社員の表と部署の表から、保存したSELECT文でビューの社員一覧を作る。ビューはデータそのものを持たない

ビューとは?

ビューは、SELECT文の結果を、表のように扱えるようにしたもの です。

ビュー自体はデータを持っていません。

そのため、仮想の表 とも呼ばれます。

ビューを使うたびに、もとになっている表に対して、保存しておいたSELECT文が実行されます。

もとの表のデータが変われば、ビューで見える結果も変わります。

ビューの作り方

ビューは、CREATE VIEWという命令で作ります。

例えば、社員の表と部署の表を結合して、全員の名前と部署名を見せるビューを作ります。

部署に所属していない社員も一覧に残すため、LEFT JOINを使います。

CREATE VIEW 社員一覧 AS
SELECT 社員.名前, 部署.部署名
FROM 社員
LEFT JOIN 部署 ON 社員.部署番号 = 部署.部署番号;

作ったビューは、普通の表と同じようにSELECT文で使えます。

SELECT * FROM 社員一覧;

ビューの使いどころ

ビューは、主に次の2つの目的で使います。

複雑な検索を簡単にする

表の結合や条件の指定が多い検索は、SQLが長くなります。

同じ検索を何度も書くと、書き間違いも起きやすくなります。

ビューなしでは長いSQLを毎回書くが、ビューありならSELECT * FROM 社員一覧と書くだけで済む比較図

ビューにしておけば、利用する人は「SELECT * FROM 社員一覧」と書くだけで済みます。

検索の中身を直したい時も、ビューを1か所直すだけで済みます。

見せるデータを絞る

社員の表に給与のような、全員には見せたくない列が入っていることがあります。

給与の列を除いたビューを作り、利用者にはビューだけを使う権限を与える図

給与の列を含まないビューを作り、利用する人にはビューだけを使う権限を与えます。

こうすると、利用する人はもとの表の給与の列を見られません。

行を絞ることもできます。例えば、「営業部の社員だけ」を見せるビューも作れます。

ビューの注意点

ビューは便利ですが、注意点もあります。

  • ビューを使うたびにSELECT文が実行されるので、もとの検索が重いとビューも重くなる
  • ビューを通したデータの更新は、条件を満たす場合に限られる。結合や集計を使ったビューは、更新できないことが多い

ビューは、主にデータを見るために使うものと考えておくとよいです。

マテリアライズドビュー

ビューと似た名前のものに、マテリアライズドビュー があります。

ビューとマテリアライズドビューの比較表。データ、使う時、速さ、最新のデータで比べている

マテリアライズドビューは、重い集計の結果を保存しておき、すぐに読みたい時に使います。

ただし、使っているデータベースによっては、この機能がないこともあります。

まとめ

今回はビューの仕組みについて説明しました。

ビューは、SELECT文の結果を表のように扱えるようにしたもので、データそのものは持たない仮想の表です。

複雑な検索を簡単にしたり、見せるデータを絞ったりするために使います。

「ビューは検索に名前を付けて保存したもの」と覚えておきましょう。

データベースの基本については、データベースの種類を図解で解説の記事で説明しています。

ビューの中で使っている表の結合については、SQLのJOINの仕組みを図解で説明の記事で説明しています。