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?

Иногда, при изменении данных, вам хочется, чтобы Ваши изменения отразились где-то еще в базе данных. В следующем уроке будет показано, как это сделать.