Outdated version of the documentation. Find the latest one here.

16.5. Lesson: ビュー

クエリを記述するときはそれを考案するのに多くの時間と労力が必要です。ビューを使えばSQLクエリの定義を再利用可能な「仮想テーブル」に保存できます。

このレッスンの目標: クエリをビューとして保存します。

16.5.1. ビューの作成

ビューはテーブルのように扱うことができますが、そのデータはクエリから供給されます。上記に基いて単純なビューを作りましょう:

create view roads_count_v as
  select count(people.name), streets.name
  from people, streets where people.street_id=streets.id
  group by people.street_id, streets.name;

はじめの create view roads_count_v as の部分だけが異なります。そのビューからデータを選択できます:

select * from roads_count_v;

結果:

 count |    name
-------+-------------
     1 | Main Road
     2 | High street
     1 | Low Street
(3 rows)

16.5.2. ビューの変更

ビューは固定されておらず、「実データ」を持ちません。つまりデータベースの中のデータに影響を与えることなく簡単に変更できます:

CREATE OR REPLACE VIEW roads_count_v AS
  SELECT count(people.name), streets.name
  FROM people, streets WHERE people.street_id=streets.id
  GROUP BY people.street_id, streets.name
  ORDER BY streets.name;

(また、この例はすべてのSQLキーワードには大文字を使用する最良慣行を示しています。)

ORDER BY 句を追加したのでビューの行はきれいに並べ替えられています:

select * from roads_count_v;

 count |    name
-------+-------------
     2 | High street
     1 | Low Street
     1 | Main Road
(3 rows)

16.5.3. ビューの削除

不要になったビューはこのように削除できます:

drop view roads_count_v;

16.5.4. In Conclusion

ビューを用いてクエリを保存し、テーブルであるかのようにその結果へアクセスできます。

16.5.5. What’s Next?

データを変更する時に、変更がデータベースの中の他の場所へ影響を及ぼすのが望ましい場合があります。次のレッスンではこの方法を紹介します。