未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【DB入門】ビューの作成と利用

title


ビューとは

リレーショナルデータベースではデータを正規化してテーブルに分割する関係上、必要なデータを取り出すときには、テーブルの結合が不可欠になります。

テーブルの結合によりSQL文が複雑化することを避けるために、よく利用するテーブルはあらかじめ結合した状態で擬似的なテーブルとして利用することができます。

この仕組みを仮想表(ビュー)と呼びます。

ビューを使うと、SELECT文の結果をあたかも1つのテーブルであるかのように扱うことができます。

ただし、ビューの中に実際にデータが入っている訳ではありません。

ビューに対して検索が行われると、自動的にビューの元になっているテーブルから実際のデータの抽出を行います。

ビューとは



【ビューとは】

・テーブルのように見えるが、データそのものは存在しない

・データを集めるための情報(どのようなレコードを集めるか)が記録されているだけ



ビューは上のような特徴があるため、ユーザが必要としている条件ごとにビューを作っておくことで、データが必要になった場合、何度も条件を指定して、テーブルから抽出する必要がなくなり、都度SQL文を入力しデータを抽出することなく、条件ごとに登録しておいたビューを実行するだけですみます。

例えば、すべての情報が登録されている販売リストから、「2016年度分のデータを抽出したい」「横浜店だけのデータを抽出したい」といった場合、副問合せなどで抽出したレコードをもとに新規にテーブルを作ってもよいのですが、データは日々更新される可能性があるので、いったん作ってしまったテーブルはすぐに古い情報になってしまいます。

常に最新版にするために、毎日テーブルを作っていると、テーブルの数が増え、管理も煩雑になります。

ビューは抽出条件の情報のみを持っているため、テーブルとして残ることがなく、メモリや記憶媒体の容量を圧迫することはありません。

ビューを実行した時のみ、仮想で結果を見せてくれるだけで、実際に登録されているわけではないからです。

またビューを作成することで、セキュリティ管理をすることもできます。

例えば、管理者にはデータベースに関するあらゆる操作ができるビューを用意し、一般の人には触っても問題ない部分だけを集めたビューを用意しておくことで、データを安全に管理することができます。

さらに、テーブル間でのリレーションシップが複雑であるデータベースは、データベース初心者にはテーブル同士を結合したビューを提供することで、データベースの難易度を気にすることなく、簡単に操作をすることができます。



ビューの作成

ビューを作成するには、CREATE VIEWを使用します。

CREATE VIEWでは、ビューの定義となるSELECT文を設定します。

定義に使用されたSELECT文の結果を、あたかも1つのテーブルのように扱うことができます。



【書式】CREATE VIEWによるビューの作成

CREATE VIEW ビュー名 AS ( 《 SELECT 文》 );



ビューからテーブルのデータを更新する

ビューは元になるテーブルの一部を表示しています。

これはビューがテーブルの窓口であるということです。

ビュー側から列の値を更新すると、元になっているテーブルの列の値も更新されます。



ビューからのINSERT(データの挿入)を制限する

ビューを通して、レコードをINSERT(挿入)するとどうなるでしょうか。

1つのテーブルから作成されたビューに対してUPDATEやINSERTを行うことは可能です。

しかし、複数のテーブルから作成されたビューは、各テーブルからのデータの寄せ集めなので、テーブルの一部だけにデータを挿入することはできません。



ビューの上書き・変更・削除

ビューの上書き

すでに同名のビューがある時に上書きしてビューを作成します。

すでにあるビューを削除して、新しく作るのと結果は同じです。

ビューを上書きして作成するには、CREATE OR REPLACE VIEWを使用します。


【書式】ビューの上書き作成

CREATE OR REPLACE ビュー名 AS (《 SELECT文》);



ビューの変更

ビューの定義を変更するには、ALTER VIEWを使用します。


【書式】ビューの定義の変更

ALTER VIEW ビュー名 AS (《 SELECT文》);



ビューの 削除

ビューを削除するにはDROP VIEWを使用します。


【書式】ビューの定義の変更

DROP VIEW ( IF EXISTS ) ビュー名;


ビューを削除する際に、対象のビューが存在ない場合は、エラーになります。

DROP VIEWの後ろにIF EXISTSを付けておくと、対象となるビューが存在しなくてもエラーにはならず、削除が実行されないだけという、結果になります。


参考図書



LINE公式アカウント

仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】


LineOfficial

友だち追加