创建一个视图:
CREATE VIEW CustomerPhoneList_vw
AS
SELECT CustomerName, Contact, Phone
FROM Customers;
更加复杂的视图:
CREATE VIEW CustomerOrders_vw
AS
SELECT sc.AccountNumber,
soh.SalesOrderID,
soh.OrderDate,
sod.ProductID,
pp.Name,
sod.OrderQty,
sod.UnitPrice,
sod.UnitPriceDiscount * sod.UnitPrice * sod.OrderQty AS TotalDiscount,
sod.LineTotal
FROM Sales.Customer AS sc
INNER JOIN Sales.SalesOrderHeader AS soh
ON sc.CustomerID = soh.CustomerID
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID
INNER JOIN Production.Product AS pp
ON sod.ProductID = pp.ProductID;
CREATE VIEW YesterdaysOrders_vw
AS
SELECT sc.AccountNumber,
soh.SalesOrderID,
soh.OrderDate,
sod.ProductID,
pp.Name,
sod.OrderQty,
sod.UnitPrice,
sod.UnitPriceDiscount * sod.UnitPrice * sod.OrderQty AS TotalDiscount,
sod.LineTotal
FROM Sales.Customer AS sc
INNER JOIN Sales.SalesOrderHeader AS soh
ON sc.CustomerID = soh.CustomerID
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID
INNER JOIN Production.Product AS pp
ON sod.ProductID = pp.ProductID
WHERE CAST(soh.OrderDate AS Date) =
CAST(DATEADD(day,-1,GETDATE()) AS Date);
数据更新:
UPDATE Sales.SalesOrderHeader
SET OrderDate = CAST(DATEADD(day,-1,GETDATE()) AS Date),
DueDate = CAST(DATEADD(day,11,GETDATE()) AS Date),
ShipDate = CAST(DATEADD(day,6,GETDATE()) AS Date)
WHERE Sales.SalesOrderHeader.SalesOrderID BETWEEN 43659 AND 43662;
使用WITH CHECK OPTION:
CREATE VIEW PortlandAreaAddresses_vw
AS
SELECT AddressID,
AddressLine1,
City,
StateProvinceID,
PostalCode,
ModifiedDate
FROM Person.Address
WHERE PostalCode LIKE '970%'
OR PostalCode LIKE '971%'
OR PostalCode LIKE '972%'
OR PostalCode LIKE '986[6-9]%'
WITH CHECK OPTION;
保护代码:加密视图:WITH ENCRYPTION
ALTER VIEW CustomerOrders_vw
WITH ENCRYPTION
AS
SELECT sc.AccountNumber,
soh.SalesOrderID,
soh.OrderDate,
sod.ProductID,
pp.Name,
sod.OrderQty,
sod.UnitPrice,
sod.UnitPriceDiscount * sod.UnitPrice * sod.OrderQty AS TotalDiscount,
sod.LineTotal
FROM Sales.Customer AS sc
INNER JOIN Sales.SalesOrderHeader AS soh
ON sc.CustomerID = soh.CustomerID
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID
INNER JOIN Production.Product AS pp
ON sod.ProductID = pp.ProductID;
索引视图:WITH SCHEMABINDING
ALTER VIEW CustomerOrders_vw
WITH SCHEMABINDING
AS
SELECT sc.AccountNumber,
soh.SalesOrderID,
soh.OrderDate,
sod.ProductID,
pp.Name,
sod.OrderQty,
sod.UnitPrice,
sod.UnitPriceDiscount * sod.UnitPrice * sod.OrderQty AS TotalDiscount,
sod.LineTotal
FROM Sales.Customer AS sc
INNER JOIN Sales.SalesOrderHeader AS soh
ON sc.CustomerID = soh.CustomerID
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID
INNER JOIN Production.Product AS pp
ON sod.ProductID = pp.ProductID;