ビューを作成する

SQLite ではビューと呼ばれる機能が用意されています。ビューは作成済みのテーブルの中のカラムやデータ取得の条件を指定して作成した仮想的なテーブルのことです。ここでは SQLite でビューを作成する方法について解説します。

(Last modified: )

ビューを作成する

ビューを作成するには次の書式を使用します。

CREATE VIEW ビュー名 AS SELECT文;

AS の後に記述された SELECT 文を使って既存のテーブルに含まれるカラムや条件などを指定します。例えば次のような使い方となります。

create view myview as select name, price from product where price > 3000;

このようにビューはテーブルの中の一部分だけを取り出しあたかも別のテーブルのように扱うことができるようにしたものです。あとでご説明しますが、ビューからはテーブルと同じようにデータを取得することができますが、ビューを使ってデータの更新や追加はできません。

では実際にビューを作成してみます。まずは元になるテーブルを次のように作成しました。

create table user(id integer, name text, address text, old integer);

ビューを作成する(1)

テーブルにデータをいくつか追加します。

insert into user values(1, 'Honda', 'Tokyo', 23);
insert into user values(2, 'Tani', 'Tokyo', 19);
insert into user values(3, 'Furuta', 'Osaka', 38);
insert into user values(4, 'Suzuki', 'Tokyo', 24);
insert into user values(5, 'Yamada', 'Fukuoka', 18);

ビューを作成する(2)

ではこのテーブルを元にビューを作成してみます。今回は tokyouser というビューを作成しました。

create view tokyouser as select id, name from user where address = 'Tokyo';

ビューを作成する(3)

作成したビューは user テーブルの id と name カラムを持ち、データとして user テーブルの address カラムの値が 'Tokyo' と一致するデータだけを持っています。(後で解説しますが実際にはデータを持っているわけではありません)。

それでは作成したビューからデータを取得してみます。

select * from tokyouser;

ビューを作成する(4)

テーブルと同じようにビューからデータを取得することができました。なおビューからデータを取得することは、ビューの元になっているテーブルから次のようにデータを取得した場合と同じです。

select id, name from user where address = 'Tokyo';

ビューを作成する(5)

ビューを作成しておくことで、テーブルから必要となるデータを簡単に簡潔に取得することができます。

ビューから取得できるデータについて

ビューはどのようなデータを元のテーブルから取得するのかについて定義をしているだけで、データそのものは持っていません。ビューからデータを取得すると、その都度現在のテーブルのデータから条件に合うデータを取得します。その為、ビューに対して同じ SQL 文を実行しても元のテーブルのデータが変わっていると異なる結果となる可能性があります。

実際に試してみます。現在元になっているテーブルに次のようなデータが格納されています。

select * from user;

ビューから取得できるデータについて(1)

作成済のビューからデータを取得します。

select * from tokyouser;

ビューから取得できるデータについて(2)

それではビューの元になっているテーブルにデータを1つ追加した上で、再びビューからデータを取得してみます。するとビューから取得できるデータが増えています。

insert into user values(6, 'Ogi', 'Tokyo', 17);

ビューから取得できるデータについて(3)

このようにビューはビュー自身でデータを保持しているわけではなく、元になっているテーブルのものを都度取得していることに注意して下さい。

ビューへのデータ追加やビューからのデータ削除

ビューからデータを取得することはできますが、ビューに対してデータの追加や削除、データの更新といった処理を行うことはできません。

実際に試てみると次のように Error: cannot modify tokyouser because it is a view のようなエラーが表示されます。

insert into tokyouser values(8, 'Nagakura');

ビューへのデータ追加やビューからのデータ削除(1)

作成済のビュー一覧を表示する

作成済みのビューの一覧だけを確認する方法はありませんが、SQLite コマンドの .tables を実行すると作成済のテーブルに加えてビューも合わせて表示されます。

.tables

作成済のビュー一覧を表示する(1)

また SQLite の特別なテーブルである sqlite_master テーブルから次のように作成済のビューの名前や作成された時の SQL 文を取得することもできます。

select name, sql from sqlite_master where type = 'view';

作成済のビュー一覧を表示する(2)

-- --

ビューを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。