Представления PostgreSQL
Представление — это виртуальная таблица, по сути, оператор PostgreSQL, хранящийся в базе данных под связанным именем.
Представление фактически представляет собой комбинацию таблиц в виде предопределённого запроса PostgreSQL.
Представление может содержать все строки таблицы или выбранные строки из одной или нескольких таблиц.
Представление может быть создано из одной или нескольких таблиц в зависимости от запроса PostgreSQL, использованного для создания представления.
Представление — это виртуальная таблица, которая позволяет пользователям достичь следующего:
- Способ для пользователей или групп пользователей находить структурированные данные более естественным или интуитивным образом.
- Ограничивать доступ к данным, чтобы пользователи могли видеть только ограниченные данные, а не всю таблицу.
- Обобщать данные из различных таблиц для формирования отчётов.
Представления PostgreSQL доступны только для чтения, поэтому операторы DELETE, INSERT или UPDATE не могут быть выполнены над представлением. Однако можно создать триггер на представлении, который срабатывает при попытке выполнения DELETE, INSERT или UPDATE над представлением, а действия, которые нужно предпринять, определяются в содержимом триггера.
CREATE VIEW (Создание представления)
В PostgreSQL используйте оператор CREATE VIEW для создания представления. Представление можно создать из одной таблицы, нескольких таблиц или других представлений.
Базовый синтаксис CREATE VIEW выглядит следующим образом:
CREATE [TEMP | TEMPORARY] VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
В операторе SELECT можно указать несколько таблиц, почти как в обычном SQL-запросе SELECT. Если используется необязательное ключевое слово TEMP или TEMPORARY, представление будет создано во временной базе данных.
Пример
Создайте таблицу COMPANY (Скачайте SQL-файл COMPANY), содержимое данных следующее:
exampledb# select * from 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 (7 rows)
Теперь ниже приведён пример создания представления из таблицы COMPANY. Представление выбирает только несколько столбцов из таблицы COMPANY:
exampledb=# CREATE VIEW COMPANY_VIEW AS SELECT ID, NAME, AGE FROM COMPANY;
Теперь можно выполнять запросы к COMPANY_VIEW способом, аналогичным запросам к реальной таблице. Вот пример:
exampledb# 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 (Удаление представления)
Чтобы удалить представление, просто используйте инструкцию DROP VIEW с view_name. Базовый синтаксис DROP VIEW выглядит следующим образом:
exampledb=# DROP VIEW view_name;
Следующая команда удалит представление COMPANY_VIEW, которое мы создали ранее:
exampledb=# DROP VIEW COMPANY_VIEW;