関係データベースにおけるビュー(view)とは、1つ以上の表(テーブル)から必要な要素だけを取り出して作った仮想的な表のことです。
ビュー(view)を作成する
CREATE VIEWの基本構文
SQLの「CREATE VIEW」を使うことで、ビューを作成することができます。
ビューの基本構文
CREATE VIEW <ビュー名> AS <SELECT文> [WITH READ ONLY] [WITH CHECK OPTION];
※ [WITH READ ONLY] [WITH CHECK OPTION]は省略可
パラメータ | 説明 |
WITH READ ONLY | 読み取り専用のビューを作成する |
WITH CHECK OPTION | 更新可能なビューを作成する |
「WITH READ ONLY」を指定することで、読み取り専用のビュー、「WITH CHECK OPTION」を指定することで更新可能なビューを作成することができます。
ただし、次の条件に一致する場合は、更新可能な「WITH CHECK OPTION」を指定していても、ビューを更新することはできません。
- 集合関数(MAXやAVGなど)を使用
- DISTINCT、GROUP BY、HAVINGを使用
- 複数の表を結合している。(例外あり)
- 副問合せを使用
本記事では「userテーブル」と「departmentテーブル」に、次のようなデータが格納されていることを前提としています。
ID (id) ※PK | 名前 (name) | 住所 (address) | 年齢 (age) | 部署ID (department_id) |
1001 | 鈴木一郎 | 東京都 | 44 | 1 |
1002 | 佐藤次郎 | 埼玉県 | 32 | 1 |
1003 | 田中三郎 | 千葉県 | 24 | 4 |
1004 | 伊藤四郎 | 東京都 | 22 | 2 |
1005 | 斎藤五郎 | 東京都 | 35 | 2 |
ID (id) ※PK | 部署名(name) |
1 | 営業部 |
2 | 開発部 |
3 | 総務部 |
CREATE VIEWの使用例
次の例では「userテーブル」と「departmentテーブル」から営業部の社員情報を抽出(user.department_id = '1')したビュー(sales_user)を
作成しています。
■CREATE VIEWの例
CREATE VIEW sales_user AS SELECT u.id, u.name, u.age, d.name AS department_name FROM sampledb.user u, sampledb.department d WHERE u.department_id = d.id AND u.department_id = '1';
■作成したビューの確認
> SELECT * FROM sales_user;
「CREATE VIEW」でビューを作成した結果、営業部の社員情報を管理するビュー「sales_user」が作成されたことがわかります。
今回作成したビューは、結合しているためビューを更新することはできません。
ビュー(view)を削除する
DROP VIEWの基本構文
SQLの「DROP VIEW」を使うことで、ビューを削除することができます。
DROP VIEW <ビュー名>;
DROP VIEWの使用例
次の例では上記で作成したビュー「sales_user」を削除しています。
■DROP VIEWの例
DROP VIEW sales_user;
学習書の紹介
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) [ ミック ] 価格:2,750円 |
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
開発者のためのWebマガジン「CodeZine」の人気連載を大幅加筆・修正して2008年に刊行、好評を博した『達人に学ぶSQL徹底指南書』の改訂・第2版です。
第2版では、初版構成を生かしつつ、SQLの強力な機能ウインドウ関数を全面的に採用して多くのコードをリバイスしました。全体的な解説の見直しや最新化も行ない、CASE式、ウィンドウ関数、外部結合、HAVING句、EXISTS述語など、SQLを扱うエンジニアに必要な「正しい書き方・考え方」「ビッグデータ時代に対応したモダンなSQL機能を駆使した書き方」を徹底解説しています。
学習書のお求めはこちらから → 全国送料無料!IT書、ビジネス書、資格書が豊富なSEshop