情報処理試験を勉強していると、「ビュー(View)って結局何?テーブルと何が違うの?」と疑問に思う場面が出てきます。
この記事では、ビューの定義・仕組み・CREATE VIEW構文・試験での出題パターンまでを一気に整理します。
対象試験と出題頻度
ビュー(View)は、基本情報技術者・応用情報技術者で出題されるテーマです。
SQLのデータ操作分野として定番化しており、「導出表」「実表(基底表)」との関係を正確に区別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
ビュー(View)とは、一言で言うと
「SELECT文の結果に名前を付けて保存した仮想表(導出表)」
のことです。
イメージとしては、「図書館の検索結果を保存したブックマーク」です。
図書館の蔵書データベースで「プログラミング」と検索すると、該当する本の一覧が表示されます。
このとき、表示された一覧は本棚のコピーではなく、蔵書データを条件で絞り込んだ「見え方」にすぎません。ブックマークしておけば、次回も同じ条件で一覧を呼び出せます。
ビューもこれと同じで、実データはテーブル(実表)にしか存在せず、ビューは「どういう条件で見せるか」というSELECT文の定義だけを保持しています。
📊 ビュー(View)の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | View |
| 分類 | 関係データベースの仮想表(導出表に名前を付けたもの) |
| 作成SQL | CREATE VIEW文(DDLに分類) |
| 実データ | 持たない(参照のたびにSELECT文を実行して結果を生成) |
解説
関係データベースでは、テーブルにすべてのデータが格納されています。しかし、利用者ごとに見せたいデータの範囲は異なります。
たとえば、社員テーブルには氏名・部署・給与・住所などの列がありますが、一般社員に給与列まで見せる必要はありません。かといって、列を物理的に分離した別テーブルを作ると、管理が複雑になります。
この「見せるデータの範囲を制御したい」というニーズに応えるのがビューです。
ビューの仕組み:実表・導出表・ビューの関係
ビューを理解するには、「実表」「導出表」「ビュー」の3つの用語の関係を整理する必要があります。
| 用語 | 意味 | 実データ |
|---|---|---|
| 実表(基底表) | CREATE TABLEで作成した、実データを格納する表 | あり |
| 導出表 | 実表に関係演算(選択・射影・結合など)を行って得られた仮想的な表の総称 | なし |
| ビュー | 導出表に名前を付けて、繰り返し呼び出せるようにしたもの | なし |
つまり、ビューは「名前を付けた導出表」です。
SELECT文の結果は一時的な導出表ですが、CREATE VIEW文で名前を付けると、以降は実表と同じ感覚で参照できます。
図解:ビューと実表の関係
| 社員ID | 氏名 | 部署 | 給与 🔒 | 住所 🔒 |
|---|---|---|---|---|
| 001 | 山田 | 営業 | 300,000 | 東京 |
| 002 | 佐藤 | 開発 | 350,000 | 大阪 |
| 003 | 鈴木 | 営業 | 280,000 | 名古屋 |
ビュー「社員一覧」を通すと、🔒 の列は見えない。
実データは全列とも実表にだけ存在する。
CREATE VIEW文の構文
— ビューの作成構文
CREATE VIEW ビュー名 AS
SELECT 列名1, 列名2, …
FROM テーブル名
WHERE 条件式;
— 具体例:営業部の社員だけを表示するビュー
CREATE VIEW 営業社員一覧 AS
SELECT 社員ID, 氏名
FROM 社員
WHERE 部署 = ‘営業’;
ビューの2つのメリット
セキュリティの向上:見せたくない列や行を除外した状態で利用者にアクセスさせることで、実表の機密データを保護できます。前述の給与列の例がまさにこれです。
操作の簡素化:複数テーブルの結合など複雑なSELECT文をビューとして定義しておけば、利用者はビュー名を指定するだけで同じ結果を得られます。
ビューの注意点(詳細を確認する)
更新可能ビューの条件:ビューを通じてINSERTやUPDATEを実行するには、ビューが単一の基底表から作成されていること、集約関数(SUM, COUNTなど)やGROUP BYを使っていないこと等の条件を満たす必要があります。複数テーブルの結合で定義されたビューは原則として更新できません。
ビューの入れ子:ビューに対してさらにビューを定義することも可能です。「ビューに対してビューを定義できない」は過去問で典型的な誤りの選択肢として登場しています。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 ビューの核心を3行で
・実データを持たず、SELECT文の定義だけを保存した仮想表
・「名前を付けた導出表」が試験での定義キーワード
・メリットはセキュリティ向上と操作の簡素化の2つ
試験ではこう出る!
ビューは、FE・APの午前問題で「ビューに関する記述として適切なものを選べ」という形式で繰り返し出題されています。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE 科目Aサンプル 問21 |
RDBMSにおけるビューに関する記述のうち適切なものを選ぶ問題。 | ・正解は「名前を付けた導出表」 ・「ビューの上にビューを定義できない」が誤りの定番選択肢 |
| FE H24春 午前 問29 |
上記サンプル問21とほぼ同一構成の問題。 | ・選択肢もほぼ同一で「名前を付けた導出表」が正解 ・FEでの流用パターンの典型 |
| FE R6 科目A免除 問21 |
ビューのSELECT権限に関する記述を選ぶ問題。 | ・ビューへのアクセス権限は実表の権限とは独立 ・GRANT/REVOKEとの関連知識が必要 |
| AP R7秋 午前 問28 |
ビューに関する記述のうち適切なものを選ぶ問題。 | ・「列名を異なる名称で定義できる」が正解 ・「結合ビューは更新可能」が誤りの選択肢 |
| AP H28秋 午前 問28 |
実表と導出表に関する記述のうち適切なものを選ぶ問題。 | ・「射影・結合などによって導出表が得られる」が正解 ・「導出表は複数の実表から得られる」が誤り(1つ以上が正しい) |
📝 IPA試験での出題パターン
パターン1:「ビューに関する記述を選べ」
4つの記述から正しいものを選ぶ形式。正解キーワードは「名前を付けた導出表」。ひっかけとして「ビューの上にビューは定義できない」「基底表より先にビューを定義する」「1つの基底表に1つだけ定義できる」の3つが繰り返し使われています。
パターン2:「実表と導出表の関係を選べ」
AP H28秋のように、導出表の性質を問う形式。「1つ以上の実表から関係演算で得られる」が正解。「複数の実表から」「参照だけに用いる」は誤りです。
ここだけは確実に押さえてください。「ビュー=名前を付けた導出表=実データを持たない仮想表」という等式を頭に入れておけば、選択肢の正誤判定は即座にできます。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 関係データベースにおけるビュー(View)の説明として、最も適切なものはどれでしょうか?
- A. CREATE TABLE文で作成される、実データを格納するための基底表である。
- B. 複数のテーブルを物理的に結合して1つの新しい実表を生成する操作である。
- C. 1つ以上の基底表や他のビューから関係演算によって得られた導出表に名前を付けたものであり、実データを持たない仮想表である。
正解と解説を見る
正解:C
解説:
ビューはCREATE VIEW文で定義される仮想表であり、参照のたびに内部的にSELECT文を実行して結果を生成します。実データそのものは基底表(実表)側にしか存在しません。
選択肢Aは基底表(実表)の説明です。CREATE TABLE文で作成される表は実データを格納するものであり、ビューとは根本的に異なります。選択肢Bは結合(JOIN)演算の説明に近いですが、結合は新しい「実表」を生成するものではなく、導出表を一時的に作り出す関係演算です。ビューの定義とは無関係です。
よくある質問(FAQ)
Q. ビューを通じてデータの更新(INSERT/UPDATE/DELETE)はできますか?
条件を満たせば可能です。単一の基底表から射影・選択だけで定義されたビューは更新可能です。ただし、複数テーブルの結合、集約関数(SUM, COUNTなど)、GROUP BY、DISTINCT、UNION を含むビューは原則として更新できません。AP R7秋 午前問28では「結合ビューは結合の仕方によらず更新できる」が誤りの選択肢として出題されています。
Q. ビューと3層スキーマの外部スキーマは関係がありますか?
関係があります。ANSI/SPARCの3層スキーマアーキテクチャにおいて、外部スキーマは「利用者ごとのデータの見え方」を定義する層です。ビューは、この外部スキーマを実現する具体的な手段の一つです。利用者Aには給与を含むビュー、利用者Bには給与を含まないビューを提供する、といった使い分けが外部スキーマの考え方に対応します。
Q. マテリアライズドビュー(Materialized View)とは何ですか?
通常のビューがSELECT文の定義だけを保持するのに対し、マテリアライズドビューはSELECT文の実行結果を物理的にディスクへ保存します。大量データの集計結果を毎回再計算するコストを避けるために使われます。ただし、基底表のデータが変更されても自動的に反映されるとは限らないため、リフレッシュ(再計算)のタイミング設計が必要です。IPA試験の午前問題で直接問われる頻度は低いため、存在を知っておく程度で十分です。
Q. ビューを削除するにはどうすればよいですか?
DROP文を使います。構文は「DROP VIEW ビュー名;」です。ビューを削除しても、元の基底表のデータには影響しません。ビューはあくまでSELECT文の定義を保存しているだけなので、定義を削除しても実データはそのまま残ります。