ビューの作成

ビューの作成方法を確認します。基本となる構文は下記の通りです。

CREATE VIEW ビュー名 AS SELECT文;

ビューとは既に作成されたテーブルの中から条件に適合する一部分を取り出して作成する仮想的なテーブルです。ASの後に既存のテーブルの中からビューとして取り出したいカラム名や取り出す行に関する条件をつけたSELECT文を記述します。

テーブル名の後に「(」から「)」の間に作成するカラムを指定します。複数ある場合はカンマ(,)で区切って記述して下さい。

具体的には次のようになります。

create view bookname as select name from books;
create view over20 as select * from personal where old > 20;

最初の例ではテーブルに含まれるカラムの中から一つのカラムだけを取り出しビューを作成しています。また次の例ではテーブルの中で「old」カラムの値が20よりも大きいデータだけを取り出しビューを作成しています。

サンプル

では実際にビューを作成してみます。

まずは元となるテーブルを作成します。

p1-1

作成したテーブルには3つのカラム「id」「name」「old」を持ちます。ではいくつかデータを追加します。

p1-2

ではこのテーブルの「id」カラムと「name」カラムだけを持つビューを作成してみます。

create view customername as select id, name from customer;

p1-3

作成したビューはテーブルと同じように扱うことができます。ではビューに含まれるデータを表示させてみます。

p1-4

もう一つ試してみます。今度は「old」カラムの値が20以上のビューを作成してみます。

create view over20 as select * from customer where old <= 20;

p1-5

元のテーブルに含まれるデータの中で、「old」カラムが20以上のデータだけが取り出されているのが確認できました。

ビューが参照しているデータ

ビューは作成された時点で元のテーブルのデータをコピーしているわけではなく、あくまで元のテーブルの一部分を参照する定義をしているだけです。その為、作成されたビューからデータを取得すると、元のテーブルのその時点のデータからビューの定義に従ってデータを取得します。

よってビューのデータを表示した場合、実行したタイミングによって結果は異なる可能性があります。

例として次のようなビューを作成していたとします。

p1-6

現時点でビューが持つデータは3行です。では元になっているテーブルにデータを1つ追加してみます。

p1-7

ここで改めてビューからデータを取得して表示してみます。

p1-8

今度は4行のデータが表示されました。このようにビューは実行されるたびに、元になっているテーブルからデータを取得していることが確認できます。

ビューに対するデータの追加や削除

ビューは読み取り専用となっており、ビューに対するINSERT文、DELETE文、UPDATE文は実行できません。

p1-9

ビューに対してINSERT文を実行してみると「SQL error: cannot modify over20 because it is a view」のようにエラーが表示され実行が行えません。

ビューの一覧を表示

作成済みのビューの一覧だけを確認する方法はありませんが、SQLiteコマンドの「.tables」でテーブルと同時にビューも表示されます。

p1-10

「customer」テーブルの他に「customername」ビューと「over20」ビューが表示されました。