Lab7_SQL (1059133), страница 2
Текст из файла (страница 2)
JOIN dbo.Products p ON o.ProdID = p.ProdID
WHERE Phone LIKE '495%'
ORDER BY Lname
-
На панели инструментов щелкните на кнопке Save.
-
Чтобы протестировать представление, откройте новый запрос SQL Server и
выполните следующий код (рис. 6):
USE Sales
SELECT * FROM dbo.Contact_in_495
Как видите, представления очень удобно использовать для повышения производительности и экономии сетевого трафика. Их также можно использовать для обеспечения защиты данных от непреднамеренного искажения при их модификации, разрешая доступ только к определённым полям.
Модификация данных через представление
Представления можно использовать не только для извлечения, но и для и модификации — вставки, обновления и удаления записей. Если вы решили использовать представления для модификации данных, вам следует помнить следующее.
-
Если вы применяете представление для модификации данных, то эта модификация может повлиять только на базовую таблицу. Это означает, что если представление отображает данные из двух таблиц, вы можете написать инструкцию, обновляющую только одну таблицу. Если же некоторая инструкция попытается обновить обе таблицы, вы получите сообщение об ошибке.
-
Вы не можете модифицировать данные в представлении, использующем агрегатные функции. Агрегатной называется функция, возвращающая итоговое значение некоторого типа, например, SUM () или AVG (). Если вы попытаетесь модифицировать такое представление, то получите сообщение об ошибке.
♦ Вы уже знаете, что представления необязательно отображают все поля таблицы. Если вы попытаетесь вставить запись в представление, не отображающее все поля, то может возникнуть проблема. Некоторые из полей, не отображаемые в представлении, могут не принимать пустые значения, но вы не можете вставить данные в поля, отсутствующие в представлении. Однако вы все же можете использовать представление для операций вставки и удаления.
Рис. 6. Новое сводное представление
Чтобы модифицировать данные через представление, нужно создать такое представление. У нас его пока нет, поскольку в вашем текущем представлении нет достаточного количества столбцов из какой-либо таблицы для модификации. Поэтому мы создадим более простое представление для обновления таблицы .
-
Откройте SQL Server Management Studio и выполните подключение с использованием аутентификации Windows.
-
В окне Object Explorer раскройте папки сервера Databases=> Sales,
щелкните правой кнопкой на папке Views и выберите команду New View
Откроется окно со списком таблиц БД Sales. -
Выберите таблицы, поля которых будут использоваться в запросе.
-
С помощью мыши перетащите используемые в запросе поля в столбец Column закладки View. Эти поля автоматически добавляются в шаблон запроса SELECT в нижней части окна.
-
Для сохранения запроса закройте закладку, нажав на [Х] в правом верхнем углу окна View , и в раскрывшемся окне введите имя представления Update_Products.
Теперь у вас есть представление (рис. 7), и вы можете протестировать его, чтобы убедиться в возможности обновления данных.
-
Щелкнув на кнопке New Query, откройте новый запрос SQL Server Query.
-
Введите и выполните следующий код тестирования представления
USE Sales
SELECT * from dbo.Update_Products
Рис. 7. Создаем представление с возможностью обновления данных
3. Теперь вы знаете, что представление работает так, как ожидалось. Создадим новую запись. Откройте новый запрос SQL Server и выполните следующий код.
USE Sales
INSERT dbo.Update_Products
VALUES ('tee',10)
4. Чтобы просмотреть данные, вставленные в базовую таблицу, выполните в окне запросов следующий код.
USE Sales
SELECT * FROM dbo.Products
WHERE Description = 'Tee'
В результирующем наборе данных из представления dbo.Update_Products вы должны увидеть только два заполненных столбца. Однако, взглянув на базовую таблицу, вы увидите три заполненных столбца. При модификации представления вы вставили значения только в два доступных столбца, а программа SQL Server заполнила остальные, поскольку в них применены ограничения на умолчания.
Заключение
С помощью редактора вы создали простое представление и протестировали его. Затем для модификации и дальнейшего улучшения представления вы добавили в него столбцы, псевдонимы и предложения ORDER BY.
Далее вы создали представление из двух таблиц и впоследствии с помощью редактора View Assisted Editor добавили еще одну таблицу (увеличив общее их количество до трех), после чего протестировали представление.
Затем мы обсудили, как использовать представления для модификации данных. Не забывайте о некоторых нюансах, связанных с модификацией данных с помощью представления.
-
Вы не можете одновременно модифицировать в представлении больше одной таблицы.
-
Если ваше представление основано на агрегатных функциях, вы не можете использовать его для модификации данных.
Если ваше представление основано на таблице, которая содержит поля, не допускающие пустые значения, то пока эти поля не будут отображены в представлении, вы не сможете вставлять новые данные. В то же время вы можете их обновлять и удалять.