SQLにおいて「VIEW(ビュー)」は、実際のテーブルと似た形で扱える仮想的なテーブルを定義する機能です。複雑なクエリを繰り返し使いたい場合や、データのアクセス制限をかけたい場合などに有効です。本記事では、ビューの基本的な役割から作成方法、利用例を解説します。


1. ビュー(VIEW)とは何か?

ビューとは、SELECT文の結果に名前を付けて、あたかもテーブルのように扱えるオブジェクトです。
なので実際にはデータを保持しておらず、都度元のテーブルにアクセスして結果を生成します。

特徴

  • 仮想テーブルであり、実データは存在しません
  • 再利用可能なSELECT文として使えます
  • 複雑なクエリを簡略化できます
  • 特定の列だけを公開することでアクセス制限に利用できます

2. VIEWの作成方法

ビューは CREATE VIEW 文を使って作成します。

構文

CREATE VIEW ビュー名 AS SELECT ~;

3. 実例:customers テーブルをもとにビューを作成

以下の customers テーブルを例とします。

customer_idcustomer_nameemailcountry
1Tanaka Tarotaro.tanaka@example.comJapan
2Sato Hanakohanako.sato@example.comJapan
3John Smithjohn.smith@example.comUSA

このテーブルから、日本国内の顧客情報だけを対象としたビューを作成するには、以下のように記述します。

CREATE VIEW japanese_customers AS
SELECT customer_id, customer_name, email
FROM customers
WHERE country = 'Japan';

このビュー japanese_customers は、まるで普通のテーブルのように扱うことができます。


4. ビューの利用方法

SELECT文で使用する

SELECT * FROM japanese_customers;

このクエリは、customers テーブルのうち、日本の顧客のみを抽出した結果を返します。


他のクエリに組み込むことも可能

SELECT COUNT(*) FROM japanese_customers;

このように、ビューは集計やJOINなど、他のSQL操作にも柔軟に使用できます。


5. 既存ビューの更新・削除

ビューの更新(再定義)

既存のビューを変更するには、CREATE OR REPLACE VIEW を使用します。

CREATE OR REPLACE VIEW japanese_customers AS
SELECT customer_id, customer_name
FROM customers
WHERE country = 'Japan';

ビューの削除

DROP VIEW japanese_customers;

6. ビューの注意点

  • パフォーマンス:ビューは毎回SELECT文を実行するため、データ量が多い場合には実テーブルより遅くなる可能性があります。
  • 更新制限:ビューを通してのINSERTUPDATEには制限があります(特に複数テーブルを含む場合や集計を含む場合)。
  • セキュリティ:ビューを使うことで、特定の列のみを公開するなどのアクセス制御が可能です。

7. まとめ

利用目的ビューの利点
クエリの簡略化複雑な処理を定義して再利用できる
アクセス制限特定の列や行のみを公開できる
読み取り専用ビュー作成誤操作の防止、安全性の向上

ビューは、複雑なクエリを簡潔に再利用したい場合や、特定のデータだけを抽出・保護したい場合に非常に便利な機能ですので、積極的に活用してみてください。