SQLのビューについて

ビューとは 

SQLにおける「ビュー」は下記の3つの特徴があります。

  1. テーブルの一部や複数テーブルを結合し、必要な項目だけを見せる仮想テーブル
  2. テーブル同様、レコードの参照や更新(挿入や更新、削除)が実行できる
      ※ただし更新できないビューもある(詳細は「ビューの使用方法」参照) 
  3. 実体はSQL文(クエリ)なので、テーブルよりサイズが小さくなる

ビューの目的 

ビューの目的は次の2つです。

  1. データ抽出の簡略化
    複雑なWHERE条件やJOINを考慮するSELECT文を毎回作成することを避ける 

  2. セキュリティ
    1.利用者に見せる情報を制限できる
       例)テーブル構造や内密な項目は見せない、etc 
    2.ビューのアクセス権限を制御することで不正なアクセスを防げる

       

      ビューの定義 

       1.作成、変更

      CREATE OR REPLACE VIEW ビュー名 AS 
      SELECT カラム名1 
         , カラム名2 
         , カラム名3 
         , ... 
       FROM テーブル名 
       WHERE ... 

       

      作成の場合は【CREATE VIEW】、変更の場合は【ALTER VIEW】でもよいが、
      同名のビューが存在する場合は「
      変更」、存在しない場合は作成してくれる【CREATE OR REPLACE】が便利 。

       

       2.削除

      DROP VIEW IF EXISTS ビュー名 

      ビューが存在しない場合、【IF EXISTS】を指定していないとエラーになる。 

       

      ビューの使用方法 

      1.データ参照

      SELECT カラム名1 
         , カラム名2 
         , カラム名3 
         , ... 
       FROM ビュー名 
       WHERE ...  

      テーブルに対するSELECT文と同じ 

       

      2. データ更新

      UPDATE ビュー名 
        SET カラム名 = 値 
       WHERE ... 

      テーブルに対するUPDATE文と同じ(INSERT文、DELETE文も同様) 

       

      ※ただし、以下の場合は更新できない 

      1. レコードを特定できない
       (例) 
        1. GROUP BY句を使用している
        2. DISTINCT句を使用している
        3. 副問合せで同じテーブルを参照している

      2. 更新するテーブルが2つ以上になる

      3. 集約関数(SUMMAX等)を使用している

      4. 集合演算子(UNIONEXCEPTINTERSECTetc)を使用している

      5. ビューにWITH READ ONLYオプションを指定している

      6. ビューにWITH CHECK OPTIONオプションを指定している
        ※ビューのWHERE条件に該当するレコードのみ挿入・更新が許される(削除は許されない) 

       

       

      (参考)マテリアライズド・ビュー 

      1.マテリアライズド・ビューとは
        ビューの結果を実データとして保持するビュー 

      2. ビューと比較したマテリアライズド・ビューのメリット・デメリット

      ●メリット
       ・参照時にSQLを実行する必要がないため、処理速度が向上する
       ・主キー、インデックスキーが設定できる

      ●デメリット
      ・実テーブル同様、表領域が必要になる
        通常のビューはSQL文なので表領域は不要
      ・保持しているレコードの更新(リフレッシュ)が必要

       

      Smallitのサービス