---
title: "ビューとは？元の表との違いとSELECT権限【基本情報技術者試験】"
description: "データベースのビューを「実表から必要な部分を見せる仮想的な表」として整理し、元の表との違い、SELECT権限の考え方、セキュリティ上のメリットをFE試験向けに解説します。"
last_modified_at: "2026-08-09"
canonical_url: "https://stemtazoo.github.io/fe/database-view-select-privilege/"
section: "fe"
---

## まず結論

ビューとは、**実表の一部や複数の表から得た結果を、1つの表のように見せる仮想的な表**です。

基本情報技術者試験では、ビューと元の表のアクセス権を同じものとして考えないことが重要です。

```text
ビューを問い合わせる
→ ビューに対するSELECT権限を見る

元の表を直接問い合わせる
→ 元の表に対するSELECT権限を見る
```

試験では、**元の表に対するSELECT権限がなくても、ビューに対するSELECT権限があれば、そのビューを参照できる**と整理します。

迷ったら、次の一文で切り分けます。

> **どの表から作られたかではなく、利用者が何に対して問い合わせているかを見る。**

## 直感的な説明

ビューは、元の表にある情報のうち、**見せてもよい部分だけを切り出した窓**のようなものです。

例えば、社員表に次の情報があるとします。

```text
社員表
-----------------
社員番号
氏名
部署
給与
住所
```

一般の利用者には、給与や住所を見せたくないとします。

そこで、氏名と部署だけを見せるビューを作ります。

```text
社員公開ビュー
-----------------
氏名
部署
```

利用者には、このビューを参照する権限だけを与えます。

```text
利用者
  ↓ SELECT
社員公開ビュー
  ↓ 元になっている
社員表
```

利用者は社員表を直接見るのではなく、**公開用のビューを通して必要な情報だけを見る**と考えると分かりやすいです。

## 定義・仕組み

関係データベースのビューは、実表に対する選択・射影・結合などの結果を、1つの表のように扱えるようにしたものです。

ビューそのものに実データを持つというより、元の表から得られる結果を表のように見せます。

例えば、次のようなSQLでビューを作るイメージです。

```sql
CREATE VIEW employee_public AS
SELECT name, department
FROM employee;
```

この場合、`employee_public` は `employee` 表から氏名と部署だけを見せるビューです。

### 実表とビューの違い

| 観点 | 実表 | ビュー |
|---|---|---|
| データ | 実データを保持する | 元の表から得た結果を表のように見せる |
| 用途 | データを保存する | 必要な部分を見せる、複雑な問合せを簡単にする |
| アクセス権 | 実表に対して設定する | ビューに対して設定できる |

ビューを使う理由は、単にSQLを短くするためだけではありません。

- 見せたくない列を隠す
- 利用者ごとに公開範囲を分ける
- 複雑な問合せ結果を簡単に利用する
- 分かりにくい表や列を使いやすい形で見せる

といった目的があります。

### SELECT権限は何に対する権限か

`SELECT` 権限は、表やビューに対して問合せを行うための権限です。

試験では、次のように切り分けます。

```text
ビューへのSELECT権限
→ そのビューを問い合わせるための権限

元の表へのSELECT権限
→ 元の表を直接問い合わせるための権限
```

したがって、ビューを問い合わせるときに重要なのは、**ビューに対するSELECT権限があるか**です。

このテーマは、基本情報技術者試験の「データベース」や「アクセス制御」と関係します。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、ビューのSELECT権限と元の表のSELECT権限の関係を問う選択肢が出ることがあります。

判断するときは、まず**誰が何を問い合わせようとしているか**を確認します。

```text
ビューを問い合わせたい
↓
ビューのSELECT権限を見る

元の表を直接問い合わせたい
↓
元の表のSELECT権限を見る
```

### 選択肢を切る判断基準

| 選択肢の考え方 | 判断 |
|---|---|
| ビューと元の表の両方のSELECT権限が必要 | 誤りと判断する |
| ビューか元の表のどちらか一方の権限があればよい | 誤りと判断する |
| 元の表のSELECT権限があればビューも見られる | 誤りと判断する |
| ビューのSELECT権限があればビューを参照できる | 正しいと判断する |

試験中は、次の言い換えが役立ちます。

> **元の表から作られていることと、元の表を直接見る権限があることは別。**

### 「元の表から作られている」に引っ張られない

ビューは元の表をもとに作られます。

そのため、

```text
元の表から作った
→ 元の表のSELECT権限も必要？
```

と考えたくなります。

しかし、FE試験では、利用者が問い合わせる対象がビューなら、**ビューに対するSELECT権限**に注目します。

## どんな場面で使う？

ビューは、利用者に必要な情報だけを見せたい場面で役立ちます。

例えば、人事部だけが給与を見られるシステムを考えます。

```text
社員表
氏名・部署・給与・住所
```

一般利用者には、氏名と部署だけを公開します。

```text
一般利用者用ビュー
氏名・部署
```

人事担当者は、より多くの情報を参照できる別のビューや実表を使います。

このように、ビューを使うことで、**利用者ごとに見せる情報を分ける**ことができます。

また、複数の表を結合した複雑な問合せをビューとして定義しておけば、利用者はその複雑さを意識せずに利用できます。

```text
複雑なJOINや条件
↓
ビューとして定義
↓
利用者は1つの表のように参照
```

## よくある誤解・混同

### ビューにSELECT権限があるなら元の表も見られる

これは別に考えます。

```text
ビューへのSELECT権限
→ ビューを参照できる

元の表へのSELECT権限
→ 元の表を直接参照できる
```

ビューのSELECT権限を持っているからといって、元の表を自由に直接参照できるという意味ではありません。

### 元の表のSELECT権限があればビューも自動的に見られる

これも同じではありません。

試験では、**アクセスする対象ごとに権限を見る**と整理します。

```text
元の表への権限
≠
ビューへの権限
```

### ビューはデータのコピー

ビューは、元の表を単純に複製した別ファイルとして考えるものではありません。

```text
実表
→ 実データを保持

ビュー
→ 元の表から得た結果を表のように見せる
```

この違いを押さえると、ビューの役割が分かりやすくなります。

### ビューはSQLを短くするためだけのもの

SQLを簡単に利用できることはメリットの1つですが、それだけではありません。

特にFE試験では、**見せたくないデータを隠すことでアクセス範囲を制御できる**点も重要です。

## まとめ（試験直前用）

- ビューは、実表から得た結果を1つの表のように見せる仮想的な表
- 元の表とビューは、アクセス権を分けて考える
- ビューを問い合わせるなら、ビューに対するSELECT権限を見る
- 元の表のSELECT権限がなくても、ビューのSELECT権限があればビューを参照できると整理する
- 迷ったら、**「利用者が何に対してSELECTしようとしているか」**を見る

```text
ビューをSELECT
→ ビューの権限

元の表をSELECT
→ 元の表の権限
```
