До сих пор мы говорили о таблицах, которые реально хранятся в базе данных. Это, так называемые, базовые таблицы (base tables). Существует другой вид таблиц, получивший название «представления» (иногда их называют»представляемые таблицы»).
Определение: Представление (view) - это таблица, содержимое которой берется из других таблиц посредством запроса. При этом новые копии данных не создаются
Когда содержимое базовых таблиц меняется, СУБД автоматически перевыполняет запросы, создающие view, что приводит к соответствующим изменениям в представлениях.
Теперь любой пользователь, чьих прав на доступ к данному представлению достаточно, может осуществлять выборку данных из studentall. Например:
SELECT FIO FROM studentall WHERE Group_name = ‘ИС-100’
SELECT FIO, count(FIO) FROM studentall GROUP BY Group_name
Права пользователей на доступ в представлениям назначаются также с помощью команд GRANT / REVOKE.
Из приведенного выше примера достаточно ясен смысл использования представлений. Если запросы типа «выбрать всех студентов данной группы с указанием адреса» выполняются достаточно часто, то создание представляемой таблицы studentall значительно сократит накладные расходы на выполнение соединения четырех базовых таблиц students, groups, student_adres и oblast. Кроме того, в представлении может быть представлена информация, явно не хранимая ни в одной из базовых таблиц. Например, один из столбцов представления может быть вычисляемым:
Здесь использована еще одна, ранее не описанная, возможность SQL - присвоение новых имен столбцам представления. В приведенном примере число студентов, учащихся в каждой группе, будет хранится в столбце с именем student_count. Заметим, что если мы хотим присвоить новые имена столбцам представления, нужно указывать имена для всех столбцов. Тип данных столбца представления и его нулевой статус всегда зависят от того, как он был определен в базовой таблице (таблицах).
Запрос на выборку данных к представлению выглядит абсолютно аналогично запросу к любой другой таблице. Однако на изменение данных в представлении накладываются ограничения. Кратко о них можно сказать следующее:
§ Если представление основано на одной таблице, изменения данных в нем допускаются. При этом изменяются данные в связанной с ним таблице.
§ Если представление основано более чем на одной таблице, то изменения данных в нем не допускаются, т.к. в большинстве случаев СУБД не может правильно восстановить схему базовых таблиц из схемы представления.
Удаление представления производится с помощью оператора: