15.5. Lesson: Представления
Когда Вы пишите запрос, Вам приходится тратить много времени и усилий для его создания. Используя представления, Вы можете сохранить текст SQL запроса в „виртуальной таблице“ для многократного использования.
Цель этого урока: Сохранить запрос как представление.
15.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)
15.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)
15.5.3. Удаление представления
Если Вам больше не нужно представление, Вы можете удалить его таким способом:
drop view roads_count_v;
15.5.4. In Conclusion
Используя представление, Вы можете сохранить запрос и использовать результаты его выполнения так, как если бы это была таблица.
15.5.5. What’s Next?
Иногда, при изменении данных, вам хочется, чтобы Ваши изменения отразились где-то еще в базе данных. В следующем уроке будет показано, как это сделать.