ビューの作成と削除
SQLiteではビューと呼ばれる機能が用意されています。ビューは作成済みのテーブルの中のカラムやデータ取得の条件を指定して作成した仮想的なテーブルのことです。ここではビューの作成や利用方法、そして必要なくなったビューの削除方法について解説します。
1.ビューの作成
2.ビューから取得できるデータについて
3.ビューへのデータ追加や削除
4.作成済のビュー一覧の表示
5.ビューの削除
ビューを作成するには次の書式を使用します。
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);
データをいくつか追加します。
ではこのテーブルを元にビューを作成してみます。今回は次のようなビューを作成しました。
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文を覚えておく必要がなくなります。
ビューはどのようなデータを元のテーブルから取得するのかについて定義をしているだけで、データそのものは持っていません。ビューからデータを取得すると、その都度現在のテーブルのデータから条件に合うデータを取得します。その為、ビューに対して同じSQL文を実行しても元のテーブルのデータが変わっていると異なる結果となる可能性があります。
実際に試してみます。現在元になっているテーブルに次のようなデータが格納されています。
作成済のビューからデータを取得します。
それではビューの元になっているテーブルにデータを1つ追加した上で、再びビューからデータを取得してみます。するとビューから取得できるデータが増えています。
このようにビューはビュー自身でデータを保持しているわけではなく、元になっているテーブルのものを都度取得していることに注意して下さい。
ビューからデータを取得することはできますが、ビューに対してデータの追加や削除、データの更新といった処理を行うことはできません。
実際に試てみると次のように「Error: cannot modify tokyouser because it is a view」のようなエラーが表示されます。
作成済みのビューの一覧だけを確認する方法はありませんが、SQLiteコマンドの「.tables」を実行すると作成済のテーブルに加えてビューも合わせて表示されます。
またSQLiteの特別なテーブルである「sqlite_master」テーブルから次のように作成済のビューの名前や作成された時のSQL文を取得することもできます。
select name, sql from sqlite_master where type = 'view';
作成済みのビューを削除するには次の書式を使います。
DROP VIEW ビュー名;
ビューを削除しても元になっているテーブルやテーブルに格納されているデータには影響しません。
それでは実際に試してみます。次のようにビューを削除しました。
drop view tokyouser;
ビューを削除した後で改めて「.tables」コマンドを実行してみるとビューが削除されていることが確認できます。
このページではビューの作成方法や実際の理由方法について解説しました。
( Written by Tatsuo Ikura )