ビューを作成する
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);
テーブルにデータをいくつか追加します。
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);
ではこのテーブルを元にビューを作成してみます。今回は tokyouser というビューを作成しました。
create view tokyouser as select id, name from user where address = 'Tokyo';
作成したビューは user テーブルの id と name カラムを持ち、データとして user テーブルの address カラムの値が 'Tokyo' と一致するデータだけを持っています。(後で解説しますが実際にはデータを持っているわけではありません)。
それでは作成したビューからデータを取得してみます。
select * from tokyouser;
テーブルと同じようにビューからデータを取得することができました。なおビューからデータを取得することは、ビューの元になっているテーブルから次のようにデータを取得した場合と同じです。
select id, name from user where address = 'Tokyo';
ビューを作成しておくことで、テーブルから必要となるデータを簡単に簡潔に取得することができます。
ビューから取得できるデータについて
ビューはどのようなデータを元のテーブルから取得するのかについて定義をしているだけで、データそのものは持っていません。ビューからデータを取得すると、その都度現在のテーブルのデータから条件に合うデータを取得します。その為、ビューに対して同じ SQL 文を実行しても元のテーブルのデータが変わっていると異なる結果となる可能性があります。
実際に試してみます。現在元になっているテーブルに次のようなデータが格納されています。
select * from user;
作成済のビューからデータを取得します。
select * from tokyouser;
それではビューの元になっているテーブルにデータを1つ追加した上で、再びビューからデータを取得してみます。するとビューから取得できるデータが増えています。
insert into user values(6, 'Ogi', 'Tokyo', 17);
このようにビューはビュー自身でデータを保持しているわけではなく、元になっているテーブルのものを都度取得していることに注意して下さい。
ビューへのデータ追加やビューからのデータ削除
ビューからデータを取得することはできますが、ビューに対してデータの追加や削除、データの更新といった処理を行うことはできません。
実際に試てみると次のように Error: cannot modify tokyouser because it is a view のようなエラーが表示されます。
insert into tokyouser values(8, 'Nagakura');
作成済のビュー一覧を表示する
作成済みのビューの一覧だけを確認する方法はありませんが、SQLite コマンドの .tables を実行すると作成済のテーブルに加えてビューも合わせて表示されます。
.tables
また SQLite の特別なテーブルである sqlite_master テーブルから次のように作成済のビューの名前や作成された時の SQL 文を取得することもできます。
select name, sql from sqlite_master where type = 'view';
-- --
ビューを作成する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。