кодесурса
«MySQL

PostgreSQL Views

script1adsense2code
script1adsense3code

Вступление

Представление - это объект данных, который не содержит никаких данных. Содержимое представления является результатом базовой таблицы. Они работают так же, как базовая таблица, но не содержат собственных данных. Разница между представлением и таблицей заключается в том, что представления - это определения, построенные поверх других таблиц (или представлений). Если данные изменяются в базовой таблице, то же самое изменение отражается в представлении. Представление может быть построено поверх одной или нескольких таблиц.

Версия: PostgreSQL 9.3.5

Содержание:

Как создать PostgreSQL View?

CREATE VIEW определяет представление запроса. Представление не материализовано физически. Вместо этого запрос выполняется каждый раз, когда на представление ссылаются в запросе. По умолчанию представление связано с базой данных по умолчанию (используемой в настоящее время базой данных). Чтобы связать представление с заданной базой данных, укажите имя как имя_базы_данных . view_name при его создании. Вот полный синтаксис:

Синтаксис:

 СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ] [ТЕМП | ВРЕМЕННОЕ] [RECURSIVE] VIEW name [(column_name [, ...])]
    [WITH (view_option_name [= view_option_value] [, ...])]
    Как запрос

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ VIEW похож, но если представление с таким именем уже существует, оно заменяется. Если дано имя схемы (например, CREATE VIEW hr.myview ...), то представление создается в указанной схеме. В противном случае он создается в текущей схеме. Временные представления существуют в специальной схеме, поэтому имя схемы не может быть задано при создании временного представления. Имя представления должно отличаться от имени любого другого представления, таблицы, последовательности, индекса или внешней таблицы в той же схеме.

Параметры:

оператор Описание
ВРЕМЕННЫЙ или ТЕМП Если указано, представление создается как временное представление. Временные представления автоматически удаляются в конце текущего сеанса.
RECURSIVE Создает рекурсивное представление.
название Имя вида, который будет создан.
column_name Необязательный список имен, которые будут использоваться для столбцов представления. Если не указано, имена столбцов выводятся из запроса.
WITH (view_option_name [= view_option_value] [, ...]) В этом разделе указываются необязательные параметры для представления; в настоящее время единственным поддерживаемым именем параметра является security_barrier, который должен быть включен, когда представление предназначено для обеспечения безопасности на уровне строк.
запрос Команда SELECT или VALUES, которая предоставит столбцы и строки представления.

Замечания:

Синтаксис рекурсивного представления:

 CREATE RECURSIVE VIEW name (столбцы) AS SELECT ...;

эквивалентно

 CREATE VIEW name AS с рекурсивным именем (столбцы) AS (SELECT ...) SELECT столбцы из имени; 

Примеры

Вот пример использования RECURSIVE:

Код:

CREATE VIEW my_view AS
    WITH RECURSIVE my_view(n) AS (
       SELECT 1
     UNION ALL
       SELECT n+1 FROM my_view WHERE n <=5
   )
   SELECT * FROM my_view;
   

Пример таблицы: сотрудники


Пример таблицы: расположение

Пример таблицы: отделы


PostgreSQL СОЗДАТЬ ВИД С ГДЕ

Команда CREATE VIEW может использоваться с предложением WHERE.

Пример:

Код:

CREATE VIEW emp_view
AS SELECT employee_id, first_name,last_name, hire_date
FROM employees 
WHERE department_id = 200;

Приведенный выше оператор PostgreSQL создаст представление emp_view, содержащее записи (для столбцов employee_id, first_name, last_name и hire_date) таблицы сотрудников, если эти записи содержат значение 200 для столбца Department_id.

PostgreSQL CREATE VIEW с помощью AND и OR

Команда CREATE VIEW может использоваться с операторами AND и OR.

Пример:

Код:

CREATE VIEW my_view
AS SELECT *
FROM locations
WHERE (country_id='US' AND city='Seattle')
OR 	(country_id=JP' AND city='Tokyo');

Приведенный выше оператор PostgreSQL создаст представление 'my_view', в котором будут записаны записи для всех столбцов таблицы местоположений, если (A) (i) значение столбца country_id равно US, и (ii) значение города - Сиэтл; или (B) (i) значение столбца country_id - JP, а (ii) значение города - Токио.

PostgreSQL СОЗДАТЬ ВИД с GROUP BY

Команда CREATE VIEW может использоваться с предложением GROUP BY.

Пример:

Код:

CREATE VIEW my_view
AS SELECT department_id, count(*)
FROM employees
GROUP BY department_id;

Приведенный выше оператор создаст представление «my_view», в котором будут собраны все записи, сгруппированные по департаменту_id, а также сохранен идентификатор департамента и число сотрудников для каждого отдела (отдел_идентификатора) из таблицы сотрудников.

PostgreSQL СОЗДАТЬ ВИД с ORDER BY

Команда CREATE VIEW может использоваться с предложением ORDER BY.

Пример:

Код:

CREATE VIEW my_view
AS SELECT department_id,count(*) 
FROM employees 
GROUP BY department_id
ORDER BY department_id;

Приведенный выше оператор PostgreSQL создаст представление «my_view», в котором будут собраны все записи, сгруппированные по Department_id и отсортированные по Department_id и количеству сотрудников для каждого отдела (отдел_ид) из таблицы сотрудников.

PostgreSQL СОЗДАТЬ ПРОСМОТР МЕЖДУ И В

Команда CREATE VIEW может использоваться с оператором BETWEEN и IN.

Пример:

Код:

CREATE VIEW my_view
AS SELECT *
FROM employees
WHERE first_name BETWEEN 'A' AND 'H' 
AND salary IN(4000,7000,9000,10000,12000);

Приведенный выше оператор создаст представление «my_view», в котором будут приниматься все таблицы записей о сотрудниках, если (A) first_name сотрудника начинается с любого из символов от «A» до «H», а (B) - это любой из следующих зарплат 4000,7000,9000,10000,12000.

PostgreSQL СОЗДАТЬ ВИД с LIKE

Команда CREATE VIEW может использоваться с оператором LIKE.

Пример:

Код:

CREATE VIEW my_view
AS SELECT *
FROM employees
WHERE first_name
NOT LIKE 'T%' AND last_name NOT LIKE 'T%';

Вышеприведенный оператор PostgreSQL создаст представление «my_view», принимающее все записи таблицы сотрудников, если (A) first_name сотрудника не начинается с «T» и (B) last_name сотрудника не начинается с «T».

PostgreSQL CREATE VIEW с использованием подзапросов

Команда CREATE VIEW может использоваться с подзапросами.

Пример:

Код:

CREATE VIEW my_view
AS SELECT employee_id,first_name,last_name 
FROM employees
WHERE department_id IN(
SELECT department_id 
FROM departments 
WHERE location_id IN (1500,1600,1700)
);

Приведенный выше оператор PostgreSQL создаст представление «my_view», в котором будут храниться все записи таблицы employee_id, first_name, last_name of employee, если Department_id удовлетворяет условию, определенному в подзапросе (за которым следует Department_id IN).

Подзапрос извлекает те идентификаторы департамента_идейства из таблицы отделов, где указатель местоположения_идентификатора - любой из списка 1500, 1600, 1700.

PostgreSQL СОЗДАТЬ ВИД с JOIN

Команда CREATE VIEW может использоваться вместе с оператором JOIN.

Пример:

Код:

CREATE VIEW my_view
AS SELECT a.employee_id,a.first_name,a.last_name, b.department_name,
b.location_id        
FROM employees a,departments b 
WHERE a.department_id=b.department_id;

Приведенный выше оператор PostgreSQL создаст представление my_view вместе с оператором JOIN.

Здесь оператор JOIN извлекает employee_id, first_name, last_name из таблицы сотрудников, а Department_id и location_id из таблицы расположений, если отдел_ид таблицы сотрудников и местоположение находятся на одном уровне.

PostgreSQL СОЗДАТЬ ВИД с UNION

Команда CREATE VIEW может использоваться с UNION.

Пример:

Код:

CREATE VIEW my_view AS
SELECT * 
FROM employees
WHERE manager_id=100 
UNION
SELECT * 
FROM employees
WHERE first_name BETWEEN 'P' AND 'W' 
UNION
SELECT *
FROM employees
WHERE salary IN(7000,9000,10000,12000);

Приведенный выше оператор PostgreSQL создаст представление «my_view», содержащее столбцы, как в «employee».

Записи будут вставлены с объединением трех подзапросов.

Первый запрос вставляет эти строки в представление «my_view» из таблицы «employee», у которого «manager_id» равен «100».

Второй запрос вставляет эти строки в представление «my_view» из таблицы «employee», строки которой имеют столбец «first_name», начинающийся с любой буквы от «P» до «W».

Третий запрос вставляет эти строки в представление «my_view» из таблицы «employee», строки которой имеют любое из следующих значений 7000,9000,10000,12000 в «salary».

Изменить вид

Оператор ALTER VIEW изменяет определение существующего представления. Для этого оператора требуются привилегии CREATE VIEW и DROP для представления, а также некоторые привилегии для каждого столбца, указанного в операторе SELECT. Синтаксис оператора похож на CREATE VIEW. Вот синтаксис:

 ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] name ALTER [COLUMN] column_name SET Выражение DEFAULT
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] name ALTER [COLUMN] column_name DROP DEFAULT
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] имя ВЛАДЕЛЕЦ new_owner
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] name RENAME TO new_name
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] name SET SCHEMA new_schema
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] имя SET (view_option_name [= view_option_value] [, ...])
ALTER VIEW [ЕСЛИ СУЩЕСТВУЕТ] name RESET (view_option_name [, ...])

Параметры:

оператор Описание
название Имя существующего представления.
ЕСЛИ СУЩЕСТВУЕТ Не выдавайте ошибку, если представление не существует. В этом случае выдается уведомление.
SET / DROP DEFAULT Эти формы устанавливают или удаляют значение по умолчанию для столбца.
новый владелец Имя пользователя нового владельца представления.
новое имя Новое имя для представления.
new_schema Новая схема для представления.
view_option_name Имя параметра просмотра, который нужно установить или сбросить.
view_option_value Новое значение для опции просмотра.

Пример:

Переименовать представление abc в xyz

Код:

ALTER VIEW my_view RENAME TO myview;

Чтобы прикрепить значение столбца по умолчанию к обновляемому представлению:

Код:

CREATE TABLE testtable (id int, tz timestamptz);
CREATE VIEW test_view AS SELECT * FROM testtable
ALTER VIEW test_view ALTER COLUMN tz SET DEFAULT now();

Оставить представление

Оператор DROP VIEW используется для удаления представлений. Чтобы удалить представление, вы должны иметь привилегию DROP для каждого представления. Вот синтаксис:

Синтаксис

 DROP VIEW [ЕСЛИ СУЩЕСТВУЕТ]      
     view_name [, view_name] ...      
	 [КАСКАД | RESTRICT]

Параметры:

оператор Описание
ЕСЛИ СУЩЕСТВУЕТ Не выдавайте ошибку, если представление не существует. В этом случае выдается уведомление.
название Имя (возможно, дополненное схемой) представления, которое нужно удалить.
CASCADE Автоматически отбрасывать объекты, которые зависят от вида (например, других видов).
RESTRICT Откажитесь от просмотра, если от него зависят какие-либо объекты. Это по умолчанию.

Пример:

Эта команда удалит представление под названием «test_view»:

 DROP VIEW test_view;

Ссылка: Руководство PostgreSQL

Предыдущая: ПОДПИСКИ
Далее: ТРИГГЕРС

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code