データベース設計

【SQL入門】ビューを作成・削除する

関係データベースにおけるビュー(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鈴木一郎東京都441
1002佐藤次郎埼玉県321
1003田中三郎千葉県244
1004伊藤四郎東京都222
1005斎藤五郎東京都352
userテーブル
ID (id) ※PK部署名(name)
1営業部
2開発部
3総務部
departmentテーブル

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版 初級者で終わりたくないあなたへ

開発者のためのWebマガジン「CodeZine」の人気連載を大幅加筆・修正して2008年に刊行、好評を博した『達人に学ぶSQL徹底指南書』の改訂・第2版です。

第2版では、初版構成を生かしつつ、SQLの強力な機能ウインドウ関数を全面的に採用して多くのコードをリバイスしました。全体的な解説の見直しや最新化も行ない、CASE式、ウィンドウ関数、外部結合、HAVING句、EXISTS述語など、SQLを扱うエンジニアに必要な「正しい書き方・考え方」「ビッグデータ時代に対応したモダンなSQL機能を駆使した書き方」を徹底解説しています。

学習書のお求めはこちらから → 全国送料無料!IT書、ビジネス書、資格書が豊富なSEshop

-データベース設計