Часть 2. Примеры создания представлений
Пример 1. Пусть в представлении требуется показать клиентов из Москвы.
В окне запросов наберем текст
CREATE VIEW Клиенты_l
AS
SELECT Фамилия, Город FROM Клиенты
WHERE Город = 'Москва'
Выполним набранный
Выборка данных из представления:
SELECT * FROM Клиенты_l
Обращение к представлению осуществляется с помощью оператора SELECT как к обычной таблице. То есть представление можно использовать в команде так же, как и любую другую таблицу.
К представлению можно строить запрос, модифицировать представление и соединять его с другими таблицами базы данных.
Попытаемся выполнить команду:
INSERT INTO Клиенты_1 VALUES ( 'Петров', 'Самара')
Эта команда допустима, и строка будет добавлена в таблицу Клиенты с помощью представления Клиенты_1. Но эта добавленная строка не будет отображаться в представлении.
Иногда такой подход может стать проблемой, т.к. данные уже находятся в таблице, но пользователь их не видит и не в состоянии выполнить их удаление или модификацию.
Для исключения подобных моментов служит WITH CHECK OPTION в определении представления.
Пример 2. Модифицируем созданное представление
ALTER VIEW Клиенты_1
SELECT Фамилия, Город
FROM Клиенты
WHERE Город = 'Москва'
WITH CHECK OPTION
Теперь вставляемые данные (или при попытке модификации данных через такое представление) будут проверяться на соответствие критериям, определенным в конструкции WHERE, определенной в операторе SELECT.
И приведенный выше оператор вставки будет отбрасываться.
Но, если вы вставите эти данные эти же данные в базовую таблицу, то все пройдет успешно.
Пример 3. Требуется создать представление, показывающее виды и количество проданного товара.
Создадим это представление с помощью программы Management Studio.
Откройте SQL Server Management Studio;
В базе данных «Торговая_фирма» выделите объект Представления;
Создать представление;
В открывшемся окне редактора представлений сформулируйте запрос
SELECT Товары.Название_товара, Продажи.Количество_ед_товара
FROM Товары INNER JOIN Продажи
ON Товары.ID_товара = Продажи.Товар
Выполните сформированный запрос;
Сохраните представление под именем Товары_количество_1;
Откройте созданную таблицу-представление.
Рис. 1. Создание представления с помощью SQL Server Management studio
Пример 4. С помощью запроса требуется создать представление, аналогичное описанному в примере 4.
Нажмите Создать запрос;
Наберите следующий код:
USE Торговая_фирма
GO
CREATE VIEW Товары_Количество_2
AS
SELECT dbo.Товары.Название_товара, dbo.Продажи.Количество_ед_товара
FROM dbo.Товары INNER JOIN
dbo.Продажи ON dbo.Товары.Id_товара = dbo.Продажи.Товар
Таким образом, были созданы разными способами два идентичных представления.
Пример 5. При создании представления можно задавать псевдонимы полей.
Создайте следующее представление:
USE Торговая_фирма
GO
CREATE VIEW Товары_Количество_3 (Товар, Продано)
AS
SELECT Товары.Название_товара, Продажи.Количество_ед_товара
FROM Товары INNER JOIN
Продажи ON Товары.Id_товара = Продажи.Товар
Выполните его командой
SELECT * FROM Товары_Количество_3
Такое представление является простым способом организации общей таблицы для группы пользователей или прикладных задач, которые используют собственные имена полей и таблицы.
Пример 6. Требуется отредактировать имеющееся представление Товары_Количество_2, а именно, добавить в представление поле Дата из таблицы Продажи.
Это можно сделать двумя способами:
Способ 1. С помощью Management studio. Для этого выделите представление Товары_Количество_2 и выберите команду контекстного меню Изменить представление.
Способ 2. С помощью запроса. Для этого выделите представление Товары_Количество_2 и выберите команду Правка.
Во втором случае вы получите коды:
SET QUOTED_IDENTIFIER ON - - Включен контроль приращения размеров файла данных
GO
SET ANSI_NULLS OFF - - Включен контроль NULL-значений
GO
ALTER Товары_Количество_2
AS
SELECT
Товары.Название_товара,
Продажи.Количество_ед_товара,
Продажи.Дата
FROM
Товары INNER JOIN Продажи
ON Товары.Id_товара = Продажи.Товар
GO
SET QUOTED_IDENTIFIER OFF - - Выключен контроль приращения размеров файла данных
GO
SET ANSI_NULLS ON - - Выключен контроль NULL-значений
GO
Пример 7.
Теперь с помощью представления добавим новые данные в одну из таблиц базы данных.
Выполним команду
INSERT INTO Товары_Количество_2 VALUES (‘Ряженка’, 12, ‘12/09/10’)
Эта команда допустима, и строка будет добавлена в таблицу Товары (если в остальных полях таблиц допустимы значения NULL).
