SQLにおいて「VIEW(ビュー)」は、実際のテーブルと似た形で扱える仮想的なテーブルを定義する機能です。複雑なクエリを繰り返し使いたい場合や、データのアクセス制限をかけたい場合などに有効です。本記事では、ビューの基本的な役割から作成方法、利用例を解説します。
Table of Contents
1. ビュー(VIEW)とは何か?
ビューとは、SELECT文の結果に名前を付けて、あたかもテーブルのように扱えるオブジェクトです。
なので実際にはデータを保持しておらず、都度元のテーブルにアクセスして結果を生成します。
特徴
- 仮想テーブルであり、実データは存在しません
- 再利用可能なSELECT文として使えます
- 複雑なクエリを簡略化できます
- 特定の列だけを公開することでアクセス制限に利用できます
2. VIEWの作成方法
ビューは CREATE VIEW
文を使って作成します。
構文
CREATE VIEW ビュー名 AS SELECT ~;
3. 実例:customers
テーブルをもとにビューを作成
以下の customers
テーブルを例とします。
customer_id | customer_name | country | |
---|---|---|---|
1 | Tanaka Taro | taro.tanaka@example.com | Japan |
2 | Sato Hanako | hanako.sato@example.com | Japan |
3 | John Smith | john.smith@example.com | USA |
このテーブルから、日本国内の顧客情報だけを対象としたビューを作成するには、以下のように記述します。
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文を実行するため、データ量が多い場合には実テーブルより遅くなる可能性があります。
- 更新制限:ビューを通しての
INSERT
やUPDATE
には制限があります(特に複数テーブルを含む場合や集計を含む場合)。 - セキュリティ:ビューを使うことで、特定の列のみを公開するなどのアクセス制御が可能です。
7. まとめ
利用目的 | ビューの利点 |
---|---|
クエリの簡略化 | 複雑な処理を定義して再利用できる |
アクセス制限 | 特定の列や行のみを公開できる |
読み取り専用ビュー作成 | 誤操作の防止、安全性の向上 |
ビューは、複雑なクエリを簡潔に再利用したい場合や、特定のデータだけを抽出・保護したい場合に非常に便利な機能ですので、積極的に活用してみてください。