Манипуляции данными из базы
Создание представления с условием выборки
Как видно в примере на рис. 6.2, для чиновника из службы контроля качества требуется представление, отличающееся от того, которое использует менеджер по маркетингу.
Рис. 6.2. Представление REPORTINGJAG (задержка результатов), предназначенное для чиновника из службы контроля качества
Ниже приведен код, с помощью которого создается представление, приведенное на рис. 6.2.
CREATE VIEW REPORTING_LAG AS SELECT ORDERS.OrderNumber, OrderDate, DateReported FROM ORDERS, RESULTS WHERE ORDERS. OrderNumber = RESULTS. OrderNumber AND RESULTS.PreliminaryFinal = 'F';
В представлении REPORTTNG_LAG содержится информация из таблицы ORDERS по датам заказов и из таблицы RESULTS по датам окончательных результатов. В этом представлении появляются только строки, у которых в столбце PRELIMJFINAL (предварительный-окончательный), взятом из таблицы RESULTS, находится значение 'F (от слова "final" – окончательный).
Создание представления с модифицированным атрибутом
В примерах из двух предыдущих разделов предложения SELECT содержат только имена столбцов. Впрочем, в любом предложении SELECT может находиться не только имя, но и выражение. Предположим, что владелец VetLab отмечает свой день рождения и хочет в честь этого события предоставить всем своим клиентам 10-процентную скидку. Он может на основе двух таблиц, ORDERS и TESTS, создать представление BIRTHDAY (день рождения).
Вполне возможно, что оно будет создано так, как показано в следующем примере:
CREATE VIEW BIRTHDAY (ClientName, Test, OrderDate, BirthdayCharge) AS SELECT ClientName, TestOrdered, OrderDate, StandardCharge *.9 FROM ORDERS, TESTS WHERE TestOrdered = TestName;
Обратите внимание, что в представлении BIRTHDAY второй столбец – Test (анализ) – соответствует столбцу TestOrdered (заказанный анализ) из таблицы ORDERS, который также соответствует столбцу TestName (название анализа) из таблицы TESTS. Как создать это представление, можно увидеть на рис. 6.3.
Рис. 6.3. Представление, созданное, чтобы показать скидки в честь дня рождения
Представления можно создавать как на основе множества таблиц, что и делалось в предыдущих примерах, так и на основе всего лишь одной таблицы. Если вам не нужны определенные столбцы и строки какой-либо таблицы, то создайте представление, в котором нет этих строк и столбцов, а затем работайте уже не с таблицей, а с представлением. Этот подход защищает пользователя от путаницы и не отвлекает внимание, которые бывают при просмотре участков таблицы, не относящихся к делу.
Совет:
Еще одной причиной создания представлений является обеспечение безопасности исходных таблиц базы данных. Одни столбцы ваших таблиц следует открыть, а другие, наоборот, скрыть. В таком случае можно создать представление только с теми столбцами, которые вы хотите сделать доступными, затем предоставить к нему широкий доступ, а доступ к исходным таблицам этого представления– ограничить. В главе 13 объясняется, каким образом обеспечивается безопасность баз данных, и описывается, как предоставлять полномочия на доступ к данным и лишать их.