ビューを作成する

広告
eyecatch

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

ビューを作成する

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

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)

-- --

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

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。