【データベース】ビューとは?1分でわかりやすく解説

Database

ビューとは、1つ以上のテーブルから必要なレコードを取得して構成される仮想的なテーブルのようなものです。

このページでは、ビューとは何か?ビューの制限事項や注意点をデータベース初心者向けにわかりやすく1分で解説します。

このページで学べる内容
  • ビューとは?
    • ビューの仕組み
    • CREATE VIEW文
  • ビューのメリット/デメリット

プログラマーやシステムエンジニアを目指す方であれば、知らないと恥ずかしい超・基本知識の1つ。是非最後までご覧ください。

スポンサーリンク

【DB】ビューとは

冒頭でも開設した通り、ビュー(View)とは1つ以上のテーブルから必要な要素のみを取得して作成される仮想的なテーブルのようなものです。

簡単に図解で説明します。

ビューとは わかりやすく
図1:ビューとは

上記のように1つのテーブルから必要な列だけ(ID列~Math列)を抜き取って仮想的なテーブルのように作成したのがビューの例です。

上記は1つのテーブルから必要な要素を取得して作成したビューですが、以下のように2つ以上のテーブルから要素を取得して作成することも可能です。

図2:ビュー(2つ以上のテーブルから構成されるビュー)

ビューの作成:CREATE VIEW

ビューを作成する際には "CREATE VIEW" 文を用います。

CREATE VIEW ビュー名称 AS (SELECT文);

CREATE VIEW に続いてビュー名称を指定し、AS句に続いてSELECT文を記述します。

上記の構文を用いて実際にPointListテーブルからMathPointListビューを作成してみます。

ビューとは わかりやすく
図3:サンプルビュー
SELECT * FROM PointList;

/*
+----+------+-------+----------+------+---------+
| ID | Name | Class | Japanese | Math | English |
+----+------+-------+----------+------+---------+
|  1 | 佐藤 | A     |      100 |  100 |      85 |
|  2 | 鈴木 | A     |       90 |   70 |      70 |
|  3 | 高橋 | A     |       85 |   70 |      65 |
|  4 | 中村 | A     |       90 |   65 |      85 |
|  5 | 小林 | B     |       70 |   90 |      65 |
|  6 | 山口 | B     |       90 |   85 |      85 |
|  7 | 田中 | B     |       70 |   90 |      65 |
|  8 | 伊藤 | B     |       70 |   90 |    NULL |
+----+------+-------+----------+------+---------+
*/

ビューを作成する際に利用するCREATE VIEW文のサンプルがこちらです。

CREATE VIEW MathPointList 
         AS SELECT ID, Name, Class, Math FROM PointList;

/* AS句のSELECT文で指定した ID列,Name列,Class列,Math列 のみのビューが作成される
+----+------+-------+------+
| ID | Name | Class | Math |
+----+------+-------+------+
|  1 | 佐藤 | A     |  100 |
|  2 | 鈴木 | A     |   70 |
|  3 | 高橋 | A     |   70 |
|  4 | 中村 | A     |   65 |
|  5 | 小林 | B     |   90 |
|  6 | 山口 | B     |   85 |
|  7 | 田中 | B     |   90 |
|  8 | 伊藤 | B     |   90 |
+----+------+-------+------+
*/

PointListテーブルから必要な列だけを取得した MathPointList ビューが作成されました。

ビュー:SELECT文でレコード抽出

本ページ冒頭で「ビューは仮想的なテーブルです」と説明した通り、SELECT文を実行する際には一般的なテーブルを扱うのと同じように抽出処理を行うことができます。

つまり、SQLの観点から見るとテーブルもビューも同じように扱うことが可能であるということです。

先ほど作成したビューからSELECT文を用いてレコードを取得してみます。

-- Class「A」の学生に関するレコードのみを取得
SELECT * FROM MathPointList
 WHERE Class = 'A';

/* 結果 Class「A」の学生に関するレコードのみが抽出される
+----+------+-------+------+
| ID | Name | Class | Math |
+----+------+-------+------+
|  1 | 佐藤 | A     |  100 |
|  2 | 鈴木 | A     |   70 |
|  3 | 高橋 | A     |   70 |
|  4 | 中村 | A     |   65 |
+----+------+-------+------+
*/

ご覧のように普通のテーブルと同じようにレコードを取得することができました。

ビューとテーブルの違い

では、ビューとテーブルは具体的に何がどう異なるのでしょうか?

結論から言うと、ビューとテーブルはレコードが保存されるか?SELECT文が保存されるか?という点で異なります。

ビュー vs テーブル
  • テーブル
    ⇒実際のデータが保存される
  • ビュー
    実際のデータは保存されておらずテーブルに対するSELECT文が保存される
図4:ビューの実体

ビューはあくまでもSELECT文を保管しているだけにすぎず、ビューの中身に実際のレコードが保存されているわけではありません。

先ほど、SELECT文を利用してビューからレコードを抽出しましたが、それはビューに保存されているレコードを参照していたわけではないのです。

SELECT * FROM MathPointList
 WHERE Class = 'A';

-- MathPointList = SELECT ID, Name, Class, Math FROM PointList

/* 結果
+----+------+-------+------+
| ID | Name | Class | Math |
+----+------+-------+------+
|  1 | 佐藤 | A     |  100 |
|  2 | 鈴木 | A     |   70 |
|  3 | 高橋 | A     |   70 |
|  4 | 中村 | A     |   65 |
+----+------+-------+------+
*/

概念的に図解すると、ビューに対するSELECT文は以下のように2つのSELECT文が内部的に発行されていることになります。

SQL:ビューのメリット/デメリット

ビューは実際にはレコードを保管しておらず、テーブルに対するSELECT文を保持しているため、以下のようなメリットがあります。

ビューのメリット
  • 記憶容量の節約
  • 開発/管理の効率化

ビューは内部的にレコードを保持しないため、その分コンピュータ内部の記憶容量の圧迫を防ぐことができます。

もしビューを作成せずに、同じようなレコードを保持するテーブルを複数構築していると、それらのテーブルに存在するレコードはすべてコンピュータ内部の別々の場所に保管されるため、限られた記憶容量を無駄に消費してしまいます。

加えてビューを利用すれば、よく利用するSELECT文を毎回記述する必要がなくなるので、開発効率や管理工数を格段に削減することができるのも大きなメリットになります。

ビューの注意点

ただし、ビューを利用する際の大きなデメリットが「パフォーマンス」です。

先ほど解説した通りビューに対してSELECT文を発行する際には、内部的には最低2回以上のSELECT文が発行されることになります。

再掲

したがって、一般的なテーブルに対するSELECT文よりも、ビューに対するSELECT文の方が処理速度が遅くなってしまうという欠点があります。

上記のメリット・デメリットを比較検討してビューの要否を決定する必要があるという点に注意しましょう。

ビューのまとめ
  • ビュー(View)とは1つ以上のテーブルから必要な要素のみを取得して作成される仮想的なテーブルのようなもの
ビューとは わかりやすく
図1:ビューとは
  • ビューには実際のデータは保存されておらずテーブルに対するSELECT文が保存される
図4:ビューの実体

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

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