Созданное представление фактически означает выполнение в отношении базы данных того оператора SELECT, который составляет суть представления. Такой оператор SELECT может либо просто содержать список столбцов таблицы, из которой из-ачекаются данные, либо может быть более сложным и включать обработку извлекаемых данных с помощью различных функций для представления этих данных в том виде, в котором их удобно видеть пользователю. Взгляните на рис. 20.1.
Представление рассматривается как объект базы данных, хотя оно и не требует реального места для своего хранения. Главное различие между представлением и таблицей состоит в том, что данные таблицы требуют физической памяти для своего хранения, а представление просто ссылается на данные реальных таблиц и поэтому места для своих данных не требует.
Представление используется точно так же, как и обычная таблица. Данными представления тоже можно манипулировать, хотя и с некоторыми ограничениями. В следующих разделах обсуждаются некоторые общие способы использования представлений, а также то, как представления хранятся в базе данных.
Рис. 20.1, Представление
Если используемая в представлении таблица удаляется, представление становится недоступным, и тогда при попытке выполнения запроса в отношении данного представления будет получено сообщение об ошибке
Представления можно использовать для защиты данных. Предположим, что у вас имеется таблица EMPLOYEE_TBL, содержащая имена, адреса, телефоны сотрудников, данные для срочной связи с ними, названия их отделов, должности и сведения об оплате их труда. Вам дали несколько сотрудников в помощь для составления ряда отчетов и для этого им понадобятся сведения об именах, адресах и телефонах. Если предоставить помощникам полный доступ к таблице EMPLOYEE_TBL, они смогут увидеть информацию об оплате других сотрудников, а вам бы этого не хотелось. Чтобы этого не допустить, вы можете создать представление, содержащее только требуемую информацию, а именно, только имена, адреса и телефоны сотрудников. В этом случае временные помощники получат доступ только к требуемой для отчета информации и не смогут получить из таблицы информацию об оплате труда.
Представления можно использовать для ограничения доступа пользователей к определенным столбцам или строкам таблиц, в зависимости от условий, задаваемых выражением ключевого слова WHERE в определении представления.
Представления являются очень удобным средством для создания итоговых отчетов на основе данных таблиц, которые обновляются очень часто.
Предположим, у вас есть таблица с информацией о городе проживания, поле, оплате труда и возрасте сотрудников фирмы. Тогда вы имеете возможность создать на основе таблицы представление, предлагающее сведения о сотрудниках по каждому городу, включающее средний возраст, среднюю зарплату, общее число сотрудников и общее число сотрудниц. После создания такого представления, его можно будет использовать для извлечения подобной информации из таблицы вместо того, чтобы каждый раз создавать соответствующий оператор SELECT, который в подобном случае может быть довольно сложным.
Единственной особенностью синтаксиса оператора,
Представление существует только в оперативной памяти. Представление не требует дискового пространства, как другие объекты базы данных, кроме пространства, занимаемого определением самого представления. Владельцем представления является создатель представления или владелец схемы. Владелец схемы автоматически получает все соответствующие привилегии доступа к представлению и право предоставлять привилегии доступа к нему другим пользователям точно так же, как и в отношении обычных таблиц. С представлениями команда GRANT и ее опция GRANT OPTION работают точно так же, как и с таблицами. За подробностями обратитесь к тексту урока 19, "Обеспечение сохранности данных".
Представления создаются с помощью команды CREATE VIEW. Представление можно создать на базе данных одной или нескольких таблиц, а также других представлений. Чтобы создать представление, пользователь должен иметь соответствующие привилегии доступа к системе, зависящие от реализации языка.
Базовый синтаксис оператора CREATE VIEW следующий.
CREATE [ RECURSIVE ] VIEW
[OF
[REF IS
AS
{ОПЕРАТОР SELECT}
WITH [CASCADED | LOCAL] CHECK OPTION]