PostgreSQL - Представления
Представления – это псевдо-таблицы. То есть это не настоящие таблицы; тем не менее, они отображаются как обычные таблицы для SELECT. Представление может представлять собой подмножество реальной таблицы, забирая определенные столбцы или определенные строки из обычной таблицы. Представление может даже представлять собой соединенные таблицы. Поскольку представлениям назначаются определенные разрешения, Вы можете использовать их для ограничения доступа к таблице, чтобы некоторые пользователи могли видеть только определенные строки или столбцы таблицы.
Представление может содержать все строки одной таблицы или выборочные строки из одной или нескольких таблиц. Представление может быть создано из одной или нескольких таблиц, что зависит от запроса PostgreSQL для создания представления.
Представления, которые являются чем-то вроде виртуальных таблиц, позволяют пользователям делать следующее:
- Структурировать данные таким образом, который кажется одному или нескольким пользователям удобным или интуитивно понятным;
- Ограничить доступ к данным таким образом, что пользователь будет видеть только разрешенную часть данных, а не всю таблицу;
- Резюмировать данные из нескольких таблиц, что особенно ценно при составлении отчетов.
Поскольку представления – это не традиционные таблицы, Вы не сможете выполнить DELETE, INSERT или UPDATE для представления. Однако Вы можете создать ПРАВИЛО (RULE), чтобы решить эту проблему.
Создание представлений
Представления PostgreSQL создаются с помощью команды CREATE VIEW . Представления PostgreSQL могут создаваться из одной или нескольких таблиц, а также из другого представления.
Базовый синтаксис CREATE VIEW выглядит следующим образом:
CREATE [TEMP | TEMPORARY] VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
Вы можете включить несколько таблиц в оператор SELECT так же, как Вы используете их в обычном запросе SELECT PostgreSQL. Если присутствует необязательное ключевое слово TEMP или TEMPORARY, представление будет создано во временном пространстве. Временные представления автоматически удаляются в конце текущего сеанса.
Пример
Рассмотрим таблицу COMPANY:
id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000
Теперь создадим представление из таблицы COMPANY. Это представление будет использовано для получения только некоторых столбцов из таблицы COMPANY:
testdb=# CREATE VIEW COMPANY_VIEW AS SELECT ID, NAME, AGE FROM COMPANY;
Теперь Вы можете сделать запрос COMPANY_VIEW таким же образом, как Вы отправляете запрос для обычной таблицы. Пример:
testdb=# SELECT * FROM COMPANY_VIEW;
Результат будет следующим:
id | name | age ----+-------+----- 1 | Paul | 32 2 | Allen | 25 3 | Teddy | 23 4 | Mark | 25 5 | David | 27 6 | Kim | 22 7 | James | 24 (7 rows)
Удаление представлений
Для удаления представления используйте DROP VIEW с view_name. Базовый синтаксис для DROP VIEW:
testdb=# DROP VIEW view_name;
Следующая команда удалит представление COMPANY_VIEW, которое мы создали выше:
testdb=# DROP VIEW COMPANY_VIEW;



