Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

UPDATE на основе соединения.




Поддерживается запись операции UPDATE на базе соединения.

Пример: увеличитьна 5% скидку на все товары заказов, сделанных клиентом 1.

UPDATE OD

SET discount = discount + 0.05

FROM dbo.OrderDetails AS OD

JOIN dbo.Orders AS O

ON OD.orderid = O.orderid

WHERE custid = 1;

Пример эквивалентного вложенного запроса:

UPDATE dbo.OrderDetails

SET discount = discount + 0.05

WHERE EXISTS

(SELECT * FROM dbo.Orders AS O

WHERE O.orderid = OrderDetails.orderid

AND custid = 1);

Пример: изменяется столбец SalesYTD в таблице SalesPerson для отображения самой последней информации о продажах, зафиксированной в таблице SalesOrderHeader.

USE AdventureWorks;

GO

UPDATE Sales.SalesPerson

SET SalesYTD = SalesYTD + SubTotal

FROM Sales.SalesPerson AS sp

JOIN Sales.SalesOrderHeader AS so

ON sp.SalesPersonID = so.SalesPersonID

AND so.OrderDate = (SELECT MAX(OrderDate)

FROM Sales.SalesOrderHeader

WHERE SalesPersonID =

sp.SalesPersonID);

GO

Пример: В предыдущем примере подразумевается, что на конкретного менеджера по продажам на каждую конкретную дату записана только одна продажа.

В ситуации, когда один менеджер может зарегистрировать за один день несколько продаж, все продажи одного менеджера должны объединяться внутри инструкции UPDATE, как показано в следующем примере:

USE AdventureWorks;

GO

UPDATE Sales.SalesPerson

SET SalesYTD = SalesYTD +

(SELECT SUM(so.SubTotal)

FROM Sales.SalesOrderHeader AS so

WHERE so.OrderDate = (SELECT MAX(OrderDate)

FROM Sales.SalesOrderHeader AS so2

WHERE so2.SalesPersonID =

so.SalesPersonID)

AND Sales.SalesPerson.SalesPersonID = so.SalesPersonID

GROUP BY so.SalesPersonID);

GO

Понятие представления. Операции создания представлений.

Представления, или просмотры (VIEW), представляют собой временные, производные (иначе - виртуальные) таблицы и являются объектами базы данных, информация в которых не хранится постоянно, как в базовых таблицах, а формируется динамически при обращении к ним. Обычные таблицы относятся к базовым, т.е. содержащим данные и постоянно находящимся на устройстве хранения информации. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц.

 

У двух рассмотренных ранее типов табличных выражений – производных таблиц и ОТВ – ограниченная область действия, единственная инструкция языка. Как только внешний запрос к табличным выражениям завершается, они исчезают и не могут использоваться многократно.

Представления и подставляемые табличные функции (будут рассмотрены далее) допускают многократное использование, их определения хранятся в объекте базы данных. Созданные один раз, эти объекты становятся постоянными компонентами базы данных и исчезают в случае явного удаления.

 

Применение представлений позволяет разработчику базы данных обеспечить каждому пользователю или группе пользователей наиболее подходящие способы работы с данными, что решает проблему простоты их использования и безопасности.

Содержимое представлений выбирается из других таблиц с помощью выполнения запроса, причем при изменении значений в таблицах данные в представлении автоматически меняются.

Представление - это фактически тот же запрос, который выполняется всякий раз при участии в какой-либо команде. Результат выполнения этого запроса в каждый момент времени становится содержанием представления. У пользователя создается впечатление, что он работает с настоящей, реально существующей таблицей.

Представление - это предопределенный запрос, хранящийся в базе данных, который выглядит подобно обычной таблице и не требует для своего хранения дисковой памяти. Для хранения представления используется только оперативная память. В отличие от других объектов базы данных представление не занимает дисковой памяти за исключением памяти, необходимой для хранения определения самого представления.

У СУБД есть две возможности реализации представлений. Если его определение простое, то система формирует каждую запись представления по мере необходимости, постепенно считывая исходные данные из базовых таблиц.

В случае сложного определения СУБД приходится сначала выполнить такую операцию, как материализация представления, т.е. сохранить информацию, из которой состоит представление, во временной таблице. Затем система приступает к выполнению пользовательской команды и формированию ее результатов, после чего временная таблица удаляется.

 

Создания и изменения представлений в стандарте языка и реализации в MS SQL Server совпадают и представлены следующей командой:

<определение_просмотра>::=

{ CREATE| ALTER} VIEW имя_просмотра [(имя_столбца [,...n])]

[WITH <view_attribute> [,...n ]]

AS SELECT_оператор

[WITH CHECK OPTION]

 

<view_attribute>::= { [ ENCRYPTION ] [ SCHEMABINDING ]

[ VIEW_METADATA ] }

 

Рассмотрим назначение основных параметров.

При необходимости в представлении можно задать новое имя для каждого столбца виртуальной таблицы. При этом надо помнить, что если указывается список столбцов, то он должен содержать ровно столько столбцов, сколько содержит их SQL-запрос.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...