Как работать с командой View в PostgreSQL
В этой статье рассмотрим работу с представлениями в PostgreSQL, изучим, как их создавать, обновлять, изменять и удалять.
PostgreSQL — популярная система управления базами данных (СУБД). Она поддерживает ACID (набор требований к сохранности данных), свободно распространяется, достаточно надежна и безопасна и содержит множество типов данных SQL. Помимо прочего она предлагает пользователям возможность создания представлений (View).
Что такое представления (View) в PostgreSQL
В PostgreSQL представление — это виртуальная таблица. Она составляется на основе данных из обычных таблиц, обеспечивает удобный и интуитивно понятный способ организации информации. Важно отметить, что представления сами по себе не хранят данные, а лишь выполняют описанный в себе запрос.
Представления бывают двух видов: обычные и материализованные. Первые просто выполняют запросы, а вторые физически хранят результаты сложных запросов и поддерживают обновление кэшированных данных.
Последний тип представления полезен, когда есть запросы, которые требуют больших вычислений. Он позволяет сохранить их результат, что значительно улучшает производительность базы данных, особенно когда информация в них изменяется редко.
Операторы CREATE VIEW и REPLACE VIEW
Оператор CREATE VIEW используется в PostgreSQL для создания представления, а REPLACE VIEW — для его обновления.
Синтаксис операторов выглядит следующим образом:
CREATE [ OR REPLACE ] VIEW view_name [ (column_name [, ...] ) ]
AS
select_statement
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
- CREATE VIEW —ключевое слово, которое указывает на создание представления.
- REPLACE — опциональное ключевое слово, которое позволяет заменить имеющееся представление с тем же именем, если оно уже существует.
- view_name —имя представления, которое вы хотите создать.
- column_name —опциональный список имен столбцов, которые вы хотите включить в представление. Если не указан, представление будет содержать все столбцы, которые возвращает запросом.
- select_statement —запрос SELECT, определяющий данные, которые будут возвращены представлением.
- WITH [ CASCADED | LOCAL ] CHECK OPTION —опциональная фраза, которая позволяет применять ограничения CHECK при вставке или обновлении данных через представление. CASCADED применяет ограничения CHECK к базовым таблицам, LOCAL — только к представлению.
Пример работы с оператором CREATE VIEW:
CREATE VIEW employee_view AS
SELECT employee_id, first_name, last_name, department
FROM employees
WHERE department = 'IT';
В этом примере создается представление employee_view, которое будет содержать столбцы employee_id, first_name, last_name и department из таблицы employees, где значение столбца department равно «IT».
Удаление представления
Чтобы удалить представление, используется оператор DROP VIEW. Его синтаксис в PostgreSQL выглядит следующим образом:
DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ];
- DROP VIEW —ключевое слово, которое указывает на удаление представления.
- IF EXISTS — опциональное ключевое слово, которое позволяет игнорировать ошибку, если представление с указанным именем не существует.
- view_name — имя представления, которое вы хотите удалить.
- CASCADE или RESTRICT — опциональные ключевые слова, которые определяют, что произойдет с другими объектами, зависящими от представления. CASCADE удалит эти объекты вместе с представлением, а RESTRICT предотвратит удаление представления, если на него есть зависимые объекты.
Пример работы с оператором DROP VIEW:
DROP VIEW employee_view;
В этом примере удаляется представление с именем employee_view.
DROP VIEW IF EXISTS employee_view, department_view CASCADE;
Здесь удаляются представления employee_view и department_view, если они существуют. Если на них есть зависимые объекты, такие как индексы или правила, они также будут удалены из-за ключевого слова CASCADE.
Вывод списка представлений
Вывод списка View в PostgreSQL
Чтобы вывести список представлений в PostgreSQL, вы можете использовать такой запрос:
SELECT table_name
FROM information_schema.tables
WHERE table_type = 'VIEW' AND table_schema = 'public';
Этот запрос вернет список представлений в схеме public.
Вывод списка View в PgAdmin
Чтобы вывести список представлений в PgAdmin, вам необходимо выполнить несколько шагов.
- Откройте PgAdmin и подключитесь к вашему серверу баз данных PostgreSQL.
- В левой панели навигации выберите базу данных, в которой находятся представления.
- Разверните ветку Схемы и выберите схему, в которой находятся представления.
- В разделе Объекты выберите Представления (или Views), чтобы отобразить список представлений в этой схеме.
- В правой панели отобразятся все представления, доступные в выбранной схеме. Вы можете просмотреть их имена и другую информацию о представлениях.
Предоставление прав доступа к представлениям
Для предоставления прав доступа к представлениям в PostgreSQL используется оператор GRANT SELECT ON. Пример синтаксиса:
GRANT SELECT ON view_name TO user_name;
В этом примере мы передаем права пользователю user_name на создание запросов к таблице view_name.
Обратите внимание, что для предоставления прав доступа к представлениям вам может понадобиться соответствующая роль или привилегии. Убедитесь, что у вашего пользователя есть необходимые права для выполнения операции GRANT SELECT.
Минусы использования представлений
Представления View имеют и минусы.
- Ограничения обновления данных. Представления View в PostgreSQL доступны только для чтения, нельзя обновлять данные напрямую через них. Для обновления данных вам придется обращаться к базовой таблице напрямую.
- Ограничения производительности. Запросы через представления могут повлиять на производительность из-за дополнительных операций, таких как объединение таблиц или выполнение сложных вычислений.
- Обновление данных в базовых таблицах. При обновление данных в базовой таблице представление может не отразить эти изменения немедленно. Из-за этого понадобиться обновить или пересоздать представления, чтобы увидеть актуальные данные.
- Зависимость от базовых таблиц. Представление View зависит от базовой таблиц, на основе которой оно созданы. Если она изменяется или удаляется, представление может потерять свою функциональность или стать недоступным.