Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
SQL-databas i Microsoft Fabric
Skapar en virtuell tabell vars innehåll (kolumner och rader) definieras av en fråga. Använd den här instruktionen för att skapa en vy över data i en eller flera tabeller i databasen. En vy kan till exempel användas i följande syften:
För att fokusera, förenkla och anpassa den uppfattning som varje användare har av databasen.
Som en säkerhetsmekanism genom att tillåta användare att komma åt data via vyn, utan att ge användarna behörighet att komma åt de underliggande bastabellerna direkt.
För att tillhandahålla ett bakåtkompatibelt gränssnitt för att emulera en tabell vars schema har ändrats.
Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server och Azure SQL Database.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
}
Syntax för Azure Synapse Analytics och Parallel Data Warehouse.
CREATE VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
AS <select_statement>
[;]
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Syntax för Microsoft Fabric Data Warehouse och SQL-analysslutpunkt.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ] AS <select_statement>
[;]
<view_attribute> ::=
{
[ SCHEMABINDING ]
}
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Argumentpunkter
ELLER ÄNDRA
Gäller för: Azure SQL Database och SQL Server (från och med SQL Server 2016 (13.x) SP1).
Villkorligt ändrar vyn endast om den redan finns.
schema_name
Är namnet på schemat som vyn tillhör.
view_name
Är namnet på vyn. Visningsnamn måste följa reglerna för identifierare. Det är valfritt att ange visningsägarens namn.
kolumn
Är namnet som ska användas för en kolumn i en vy. Ett kolumnnamn krävs endast när en kolumn härleds från ett aritmetiskt uttryck, en funktion eller en konstant. när två eller flera kolumner annars kan ha samma namn, vanligtvis på grund av en koppling; eller när en kolumn i en vy anges ett annat namn än det för kolumnen som den härleds från. Kolumnnamn kan också tilldelas i -instruktionen SELECT
.
Om kolumnen inte har angetts får vykolumnerna samma namn som kolumnerna i -instruktionen SELECT
.
Anmärkning
I kolumnerna för vyn gäller behörigheterna för ett kolumnnamn i en CREATE VIEW
eller ALTER VIEW
-instruktionen, oavsett källan till underliggande data. Om behörigheter till exempel beviljas för SalesOrderID
kolumnen i en CREATE VIEW-instruktion kan en ALTER VIEW
-instruktion namnge SalesOrderID
kolumnen med ett annat kolumnnamn, till exempel , och fortfarande ha de behörigheter som OrderRef
är associerade med vyn med hjälp av SalesOrderID
.
SOM
Anger vilka åtgärder vyn ska utföra.
select_statement
Instruktionen SELECT
som definierar vyn. Instruktionen kan använda mer än en tabell och andra vyer. Lämpliga behörigheter krävs för att välja från de objekt som refereras i satsen i SELECT
vyn som skapas.
En vy behöver inte vara en delmängd av raderna och kolumnerna i en viss tabell. En vy kan skapas som använder mer än en tabell eller andra vyer med en SELECT
sats av någon komplexitet.
I en indexerad vydefinition måste -instruktionen SELECT
vara en enda tabell-instruktion eller en multitable JOIN
med valfri aggregering.
SELECT
Satserna i en vydefinition kan inte innehålla:
En
ORDER BY
sats, såvida det inte också finns enTOP
sats i instruktionensSELECT
urvalslistaViktigt!
Satsen
ORDER BY
används endast för att fastställa de rader som returneras avTOP
satsen ellerOFFSET
i vydefinitionen.ORDER BY
Satsen garanterar inte ordnade resultat när vyn efterfrågas, såvida inteORDER BY
också anges i själva frågan.Nyckelordet
INTO
Satsen
OPTION
En referens till en tillfällig tabell eller en tabellvariabel.
Eftersom select_statement använder -instruktionen SELECT
är det giltigt att använda kopplingstips och tabelltips enligt FROM
satsen. Mer information finns i FROM (Transact-SQL) och SELECT (Transact-SQL).
Funktioner och flera SELECT
instruktioner avgränsade med UNION
eller UNION ALL
kan användas i select_statement.
ALTERNATIVET KONTROLLERA
Tvingar alla datamodifieringsinstruktioner som körs mot vyn att följa kriterierna som anges i select_statement. När en rad ändras via en vy WITH CHECK OPTION
ser du till att data förblir synliga i vyn efter att ändringen har checkats in.
Anmärkning
Det CHECK OPTION
gäller endast uppdateringar som görs via vyn. Den har ingen tillämplighet för uppdateringar som utförs direkt till en vys underliggande tabeller.
KRYPTERING
gäller för: SQL Server 2008 (10.0.x) och senare och Azure SQL Database.
Krypterar posterna i sys.syscomments som innehåller instruktionens CREATE VIEW
text. Med hjälp WITH ENCRYPTION
av förhindras att vyn publiceras som en del av SQL Server-replikering.
SCHEMABINDNING
Binder vyn till schemat för den underliggande tabellen eller tabellerna. När SCHEMABINDING
har angetts kan inte bastabellen eller tabellerna ändras på ett sätt som påverkar vydefinitionen. Själva vydefinitionen måste först ändras eller tas bort för att ta bort beroenden i tabellen som ska ändras. När du använder SCHEMABINDING
måste select_statement innehålla namnen i två delar (schema.objekt) med tabeller, vyer eller användardefinierade funktioner som refereras till. Alla refererade objekt måste finnas i samma databas.
Vyer eller tabeller som deltar i en vy som skapats med SCHEMABINDING-satsen kan inte tas bort om inte vyn tas bort eller ändras så att den inte längre har schemabindning. Annars genererar databasmotorn ett fel. Dessutom misslyckas körningen av instruktioner på tabeller som deltar i vyer som har schemabindning ALTER TABLE
när dessa instruktioner påverkar vydefinitionen.
VIEW_METADATA
Anger att instansen av SQL Server ska återgå till API:erna DB-Library, ODBC och OLE DB metadatainformationen om vyn, i stället för bastabellen eller tabellerna, när metadata i bågläge begärs för en fråga som refererar till vyn. Metadata i bläddra-läge är ytterligare metadata som SQL Server-instansen returnerar till dessa API:er på klientsidan. Med dessa metadata kan API:er på klientsidan implementera uppdaterade markörer på klientsidan. Metadata i bläddra-läge innehåller information om bastabellen som kolumnerna i resultatuppsättningen tillhör.
För vyer som skapats med VIEW_METADATA
returnerar metadata i bläddra-läge visningsnamnet och inte bastabellnamnen när de beskriver kolumner från vyn i resultatuppsättningen.
När en vy skapas med hjälp WITH VIEW_METADATA
av är alla dess kolumner, förutom en tidsstämpelkolumn , uppdaterbara om vyn har INSTEAD OF INSERT
eller INSTEAD OF UPDATE
utlöser. Mer information om uppdateringsbara vyer finns i Kommentarer.
Anmärkningar
En vy kan bara skapas i den aktuella databasen. Måste CREATE VIEW
vara den första instruktionen i en frågebatch. En vy kan ha högst 1 024 kolumner.
När du frågar via en vy kontrollerar databasmotorn att alla databasobjekt som refereras var som helst i -instruktionen finns och att de är giltiga i kontexten för -instruktionen, och att datamodifieringsinstruktioner inte bryter mot några regler för dataintegritet. En kontroll som misslyckas returnerar ett felmeddelande. En lyckad kontroll översätter åtgärden till en åtgärd mot den underliggande tabellen eller tabellerna.
Om en vy är beroende av en tabell eller vy som har tagits bort skapar databasmotorn ett felmeddelande när någon försöker använda vyn. Om en ny tabell eller vy skapas och tabellstrukturen inte ändras från den tidigare bastabellen för att ersätta den borttagna, blir vyn användbar igen. Om den nya tabellen eller vystrukturen ändras måste vyn tas bort och skapas på nytt.
Om en vy inte skapas med SCHEMABINDING
-satsen kör du sp_refreshview när ändringar görs i objekten som ligger bakom vyn som påverkar definitionen av vyn. Annars kan vyn ge oväntade resultat när den efterfrågas.
När en vy skapas lagras information om vyn i följande katalogvyer: sys.views, sys.columns och sys.sql_expression_dependencies. Texten i instruktionen CREATE VIEW
lagras i katalogvyn sys.sql_modules .
En fråga som använder ett index i en vy som definierats med numeriska uttryck eller flyttaluttryck kan ha ett resultat som skiljer sig från en liknande fråga som inte använder indexet i vyn. Den här skillnaden kan orsakas av avrundningsfel under INSERT
, DELETE
eller UPDATE
åtgärder i underliggande tabeller.
Databasmotorn sparar inställningarna SET QUOTED_IDENTIFIER
för och SET ANSI_NULLS
när en vy skapas. De här ursprungliga inställningarna används för att parsa vyn när vyn används. Därför påverkar alla klientsessionsinställningar för SET QUOTED_IDENTIFIER
och SET ANSI_NULLS
inte vydefinitionen när vyn används.
I Azure Synapse Analytics stöder vyer inte schemabindning. Om ändringar görs i de underliggande objekten bör du därför släppa och återskapa vyn för att uppdatera underliggande metadata. Mer information finns i T-SQL-vyer med dedikerad SQL-pool och serverlös SQL-pool i Azure Synapse Analytics.
I Azure Synapse Analytics stöds inte uppdateringsbara vyer, DML-utlösare (av typen AFTER
eller INSTEAD OF
) och partitionerade vyer. Mer information finns i T-SQL-vyer med dedikerad SQL-pool och serverlös SQL-pool i Azure Synapse Analytics.
Partitionerade vyer stöds inte i Azure Synapse Analytics. Mer information finns i T-SQL-vyer med dedikerad SQL-pool och serverlös SQL-pool i Azure Synapse Analytics.
I Fabric SQL-databasen kan vyer skapas, men de speglas inte i Fabric OneLake. Mer information finns i begränsningar för sql-databasspegling av infrastrukturresurser.
Uppdateringsbara vyer
Du kan ändra data i en underliggande bastabell genom en vy, så länge följande villkor är uppfyllda:
Alla ändringar, inklusive
UPDATE
,INSERT
ochDELETE
-instruktioner, måste referera till kolumner från endast en bastabell.De kolumner som ändras i vyn måste referera direkt till underliggande data i tabellkolumnerna. Kolumnerna kan inte härledas på något annat sätt, till exempel genom följande:
En mängdfunktion:
AVG
,COUNT
,SUM
,MIN
,MAX
,GROUPING
,STDEV
,STDEVP
, ,VAR
ochVARP
.En beräkning. Det går inte att beräkna kolumnen från ett uttryck som använder andra kolumner. Kolumner som bildas med hjälp av de angivna operatorerna UNION, UNION ALL, CROSSJOIN, EXCEPT och INTERSECT motsvarar en beräkning och är inte heller uppdaterbara.
De kolumner som ändras påverkas inte av
GROUP BY
,HAVING
ellerDISTINCT
-satser.TOP används inte någonstans i select_statement i vyn tillsammans med
WITH CHECK OPTION
-satsen.
De tidigare begränsningarna gäller för alla underfrågor i FROM-satsen i vyn, precis som de gäller för själva vyn. I allmänhet måste databasmotorn entydigt kunna spåra ändringar från vydefinitionen till en bastabell. Mer information finns i Ändra data via en vy.
Om de tidigare begränsningarna hindrar dig från att ändra data direkt via en vy bör du överväga följande alternativ:
I STÄLLET för utlösare
INSTEAD OF
utlösare kan skapas i en vy för att göra en vy uppdaterad. UtlösarenINSTEAD OF
körs i stället för instruktionen för dataändring som utlösaren har definierats för. Med den här utlösaren kan användaren ange den uppsättning åtgärder som måste utföras för att bearbeta instruktionen för dataändring. Om det därför finns enINSTEAD OF
utlösare för en vy på en specifik datamodifieringssats (INSERT
,UPDATE
, ellerDELETE
) är motsvarande vy uppdaterbar via den instruktionen. Mer information omINSTEAD OF
utlösare finns i DML-utlösare.Partitionerade vyer
Om vyn är en partitionerad vy är vyn uppdaterad, med vissa begränsningar. När det behövs särskiljer databasmotorn lokala partitionerade vyer som de vyer där alla deltagande tabeller och vyn finns på samma instans av SQL Server och distribuerade partitionerade vyer som de vyer där minst en av tabellerna i vyn finns på en annan eller fjärransluten server.
Partitionerade vyer
En partitionerad vy är en vy som definieras av en UNION ALL
medlemstabell som är strukturerad på samma sätt, men som lagras separat som flera tabeller i antingen samma instans av SQL Server eller i en grupp autonoma instanser av SQL Server-servrar, som kallas federerade databasservrar.
Anmärkning
Den bästa metoden för att partitionera data lokalt till en server är via partitionerade tabeller. Mer information finns i partitionerade tabeller och index.
När du utformar ett partitioneringsschema måste det vara tydligt vilka data som tillhör varje partition. Till exempel distribueras data för Customers
tabellen i tre medlemstabeller på tre serverplatser: Customers_33
på Server1
, Customers_66
på Server2
och Customers_99
på Server3
.
En partitionerad vy på definieras på Server1
följande sätt:
--Partitioned view as defined on Server1
CREATE VIEW Customers
AS
--Select from local member table.
SELECT *
FROM CompanyData.dbo.Customers_33
UNION ALL
--Select from member table on Server2.
SELECT *
FROM Server2.CompanyData.dbo.Customers_66
UNION ALL
--Select from member table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99;
I allmänhet sägs en vy vara en partitionerad vy om den är av följande formulär:
SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn;
Villkor för att skapa partitionerade vyer
Välj
list
I kolumnlistan för vydefinitionen väljer du alla kolumner i medlemstabellerna.
Se till att kolumnerna i samma ordningsposition för var och en
select list
är av samma typ, inklusive sortering. Det räcker inte att kolumnerna är implicit konvertibla typer, vilket vanligtvis är fallet förUNION
.Dessutom måste minst en kolumn (till exempel
<col>
) visas i alla markeringslistor i samma ordningstal. Definiera<col>
på ett sätt som medlemstabellernaT1, ..., Tn
har CHECK-begränsningarC1, ..., Cn
definierade på<col>
, respektive.Villkoret
C1
som definieras i tabellenT1
måste vara av följande formulär:C1 ::= < simple_interval > [ OR < simple_interval > OR ...] < simple_interval > :: = < col > { < | > | \<= | >= | = < value >} | < col > BETWEEN < value1 > AND < value2 > | < col > IN ( value_list ) | < col > { > | >= } < value1 > AND < col > { < | <= } < value2 >
Begränsningarna måste vara på ett sådant sätt att alla angivna värden
<col>
för högst kan uppfylla en av begränsningarnaC1, ..., Cn
så att begränsningarna utgör en uppsättning uppdelade intervall eller icke-överlappande intervall.<col>
Kolumnen där de uppdelade begränsningarna definieras kallas för partitioneringskolumnen. Partitioneringskolumnen kan ha olika namn i de underliggande tabellerna. Begränsningarna måste vara i ett aktiverat och betrott tillstånd för att de ska kunna uppfylla de tidigare nämnda villkoren i partitioneringskolumnen. Om begränsningarna är inaktiverade aktiverar du begränsningskontrollen igen med hjälpCHECK CONSTRAINT *constraint_name*
avALTER TABLE
alternativet och använderWITH CHECK
alternativet för att verifiera dem.I följande exempel visas giltiga uppsättningar med begränsningar:
{ [col < 10], [col between 11 and 20] , [col > 20] } { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }
Samma kolumn kan inte användas flera gånger i urvalslistan.
Partitioneringskolumn
Partitioneringskolumnen är en del av tabellens PRIMÄRNYCKEL.
Det kan inte vara en kolumn för beräkning, identitet, standard eller tidsstämpel .
Om det finns mer än en begränsning för samma kolumn i en medlemstabell ignorerar databasmotorn alla begränsningar och tar inte hänsyn till dem när du avgör om vyn är en partitionerad vy. Om du vill uppfylla villkoren för den partitionerade vyn kontrollerar du att det bara finns en partitioneringsbegränsning för partitioneringskolumnen.
Det finns inga begränsningar för uppdatbarheten för partitioneringskolumnen.
Medlemstabeller eller underliggande tabeller
T1, ..., Tn
Tabellerna kan vara antingen lokala tabeller eller tabeller från andra datorer som kör SQL Server som refereras antingen via ett namn i fyra delar eller ett OPENDATASOURCE- eller OPENROWSET-baserat namn. Syntaxen OPENDATASOURCE och OPENROWSET kan ange ett tabellnamn, men inte en direktfråga. Mer information finns i OPENDATASOURCE (Transact-SQL) och OPENROWSET (Transact-SQL).
Om en eller flera av medlemstabellerna är fjärranslutna kallas vyn distribuerad partitionerad vy och ytterligare villkor gäller. De beskrivs senare i det här avsnittet.
Samma tabell kan inte visas två gånger i den uppsättning tabeller som kombineras med -instruktionen
UNION ALL
.Medlemstabellerna kan inte ha index som skapats på beräknade kolumner i tabellen.
Medlemstabellerna har alla PRIMARY KEY-begränsningar för samma antal kolumner.
Alla medlemstabeller i vyn har samma ANSI-utfyllnadsinställning. Detta kan anges med hjälp av antingen alternativet användaralternativ i
sp_configure
eller SET-instruktionen.
Villkor för att ändra data i partitionerade vyer
Följande begränsningar gäller för instruktioner som ändrar data i partitionerade vyer:
Instruktionen
INSERT
tillhandahåller värden för alla kolumner i vyn, även om de underliggande medlemstabellerna har enDEFAULT
begränsning för dessa kolumner eller om de tillåterNULL
värden. För de medlemstabellkolumner som harDEFAULT
definitioner kan inte uttrycken uttryckligen använda nyckelordetDEFAULT
.Värdet som infogas i partitioneringskolumnen uppfyller minst en av de underliggande begränsningarna. annars misslyckas infogningsåtgärden med en begränsningsöverträdelse.
UPDATE
-instruktioner kan inte ange nyckelordetDEFAULT
som ett värde iSET
-satsen, även om kolumnen har ettDEFAULT
värde som definierats i motsvarande medlemstabell.Kolumner i vyn som är en identitetskolumn i en eller flera av medlemstabellerna kan inte ändras med hjälp av en
INSERT
-instruktionUPDATE
.Om en av medlemstabellerna innehåller en tidsstämpelkolumn kan data inte ändras med hjälp av en
INSERT
-instruktionUPDATE
.Om en av medlemstabellerna innehåller en utlösare eller en eller
ON UPDATE CASCADE/SET NULL/SET DEFAULT
ettON DELETE CASCADE/SET NULL/SET DEFAULT
villkor kan vyn inte ändras.INSERT
,UPDATE
, ochDELETE
åtgärder mot en partitionerad vy tillåts inte om det finns en självkoppling med samma vy eller med någon av medlemstabellerna i -instruktionen.Massimport av data till en partitionerad vy stöds inte av
bcp
ellerBULK INSERT
och-instruktionernaINSERT ... SELECT * FROM OPENROWSET(BULK...)
. Du kan dock infoga flera rader i en partitionerad vy med hjälp av INSERT-instruktionen .Anmärkning
Om du vill uppdatera en partitionerad vy måste användaren ha
INSERT
,UPDATE
ochDELETE
behörigheter för medlemstabellerna.
Ytterligare villkor för distribuerade partitionerade vyer
För distribuerade partitionerade vyer (när en eller flera medlemstabeller är fjärranslutna) gäller följande ytterligare villkor:
En distribuerad transaktion startas för att garantera atomitet över alla noder som påverkas av uppdateringen.
Ange alternativet
XACT_ABORT SET
tillON
förINSERT
,UPDATE
ellerDELETE
-instruktioner som ska fungera.Alla kolumner i fjärrtabeller av typen smallmoney som refereras i en partitionerad vy mappas som pengar. Därför måste motsvarande kolumner (i samma ordningstal i urvalslistan) i de lokala tabellerna också vara av typen pengar.
Under databaskompatibilitetsnivå 110 och senare mappas alla kolumner i fjärrtabeller av typen smalldatetime som refereras till i en partitionerad vy som smalldatetime. Motsvarande kolumner (i samma ordningsläge i urvalslistan) i de lokala tabellerna måste vara smalldatetime. Detta är en ändring i beteendet från tidigare versioner av SQL Server där alla kolumner i fjärrtabeller av typen smalldatetime som refereras i en partitionerad vy mappas som datetime och motsvarande kolumner i lokala tabeller måste vara av typen datetime. Mer information finns i ALTER DATABASE Compatibility Level (Transact-SQL).
En länkad server i den partitionerade vyn kan inte vara en loopback-länkad server. Det här är en länkad server som pekar på samma instans av SQL Server.
Inställningen för SET ROWCOUNT
alternativet ignoreras för INSERT
, UPDATE
och DELETE
åtgärder som omfattar uppdateringsbara partitionerade vyer och fjärrtabeller.
När medlemstabellerna och den partitionerade vydefinitionen är på plats skapar SQL Server-frågeoptimeraren intelligenta planer som använder frågor effektivt för att komma åt data från medlemstabeller.
CHECK
Med villkorsdefinitionerna mappar frågeprocessorn fördelningen av nyckelvärden mellan medlemstabellerna. När en användare utfärdar en fråga jämför frågeprocessorn kartan med de värden som anges i WHERE
-satsen och skapar en körningsplan med en minimal mängd dataöverföring mellan medlemsservrar. Om vissa medlemstabeller finns på fjärrservrar löser instansen av SQL Server därför distribuerade frågor så att mängden distribuerade data som måste överföras är minimal.
Överväganden för replikering
Följande överväganden gäller för att skapa partitionerade vyer på medlemstabeller som ingår i replikeringen:
Om de underliggande tabellerna ingår i sammanslagningsreplikering eller transaktionsreplikering med uppdatering av prenumerationer kontrollerar du att kolumnen uniqueidentifier också ingår i urvalslistan.
Alla
INSERT
åtgärder i den partitionerade vyn måste ange ettNEWID()
värde för kolumnen uniqueidentifier . Alla UPDATE-åtgärder mot kolumnen uniqueidentifier måste angesNEWID()
som värde eftersom nyckelordet DEFAULT inte kan användas.Replikeringen av uppdateringar som görs med hjälp av vyn är densamma som när tabeller replikeras i två olika databaser: tabellerna hanteras av olika replikeringsagenter och ordningen på uppdateringarna garanteras inte.
Behörigheter
Kräver CREATE VIEW-behörighet i databasen och ALTER-behörighet för schemat där vyn skapas.
Exempel
I följande exempel används AdventureWorks2022
databasen eller AdventureWorksDW2022
.
A. Använda CREATE VIEW för att skapa en vy
I följande exempel skapas en vy med hjälp av en SELECT
-instruktion. En enkel vy är användbar när en kombination av kolumner efterfrågas ofta. Data från den här vyn kommer från tabellerna HumanResources.Employee
och Person.Person
i databasen AdventureWorks2022. Data innehåller information om namn och anställningsdatum för anställda i Adventure Works Cycles. Vyn kan skapas för den person som ansvarar för att spåra arbetsjubileum, men utan att ge den här personen åtkomst till alla data i dessa tabeller.
CREATE VIEW hiredate_view
AS
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee AS e
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO
B. Använda MED KRYPTERING
I följande exempel används alternativet WITH ENCRYPTION
och beräknade kolumner, omdöpta kolumner och flera kolumner visas.
Gäller för: SQL Server 2008 (10.0.x) och senare och SQL Database.
CREATE VIEW Purchasing.PurchaseOrderReject
WITH ENCRYPTION
AS
SELECT PurchaseOrderID, ReceivedQty, RejectedQty,
RejectedQty / ReceivedQty AS RejectRatio, DueDate
FROM Purchasing.PurchaseOrderDetail
WHERE RejectedQty / ReceivedQty > 0
AND DueDate > CONVERT(DATETIME,'20010630',101) ;
GO
C. ANVÄND ALTERNATIVET MED KONTROLL
I följande exempel visas en vy med namnet dbo.SeattleOnly
som refererar till fem tabeller och tillåter att dataändringar endast gäller för anställda som bor i Seattle.
CREATE VIEW dbo.SeattleOnly
AS
SELECT p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode
FROM HumanResources.Employee e
INNER JOIN Person.Person p
ON p.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress bea
ON bea.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.Address a
ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince sp
ON sp.StateProvinceID = a.StateProvinceID
WHERE a.City = 'Seattle'
WITH CHECK OPTION ;
GO
D. Använda inbyggda funktioner i en vy
I följande exempel visas en vydefinition som innehåller en inbyggd funktion. När du använder funktioner måste du ange ett kolumnnamn för den härledda kolumnen.
CREATE VIEW Sales.SalesPersonPerform
AS
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)
GROUP BY SalesPersonID;
GO
E. Använda partitionerade data
I följande exempel används tabeller med namnet SUPPLY1
, SUPPLY2
, SUPPLY3
och SUPPLY4
. Dessa tabeller motsvarar leverantörstabellerna från fyra kontor i olika regioner.
--Create the tables and insert the values.
CREATE TABLE dbo.SUPPLY1 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 1 and 150),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY2 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 151 and 300),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY3 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 301 and 450),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY4 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 451 and 600),
supplier CHAR(50)
);
GO
--Create the view that combines all supplier tables.
CREATE VIEW dbo.all_supplier_view
WITH SCHEMABINDING
AS
SELECT supplyID, supplier
FROM dbo.SUPPLY1
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY2
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY3
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY4;
GO
INSERT dbo.all_supplier_view VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd')
, ('231', 'FarEast'), ('280', 'NZ')
, ('321', 'EuroGroup'), ('442', 'UKArchip')
, ('475', 'India'), ('521', 'Afrique');
GO
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
F. Skapa en vy genom att ansluta två tabeller
I följande exempel skapas en vy med hjälp av en SELECT
-instruktion med en OUTER JOIN
. Resultatet av kopplingsfrågan fyller i vyn.
CREATE VIEW view1
AS
SELECT fis.CustomerKey, fis.ProductKey, fis.OrderDateKey,
fis.SalesTerritoryKey, dst.SalesTerritoryRegion
FROM FactInternetSales AS fis
LEFT OUTER JOIN DimSalesTerritory AS dst
ON (fis.SalesTerritoryKey=dst.SalesTerritoryKey);
Relaterat innehåll
- ALTER TABLE (Transact-SQL)
- ALTER VIEW (Transact-SQL)
- TA BORT (Transact-SQL)
- DROP VIEW (Transact-SQL)
- INSERT (Transact-SQL)
- Skapa en lagrad procedur
- sys.dm_sql_referenced_entities (Transact-SQL)
- sys.dm_sql_referencing_entities (Transact-SQL)
- sp_help (Transact-SQL)
- sp_helptext (Transact-SQL)
- sp_refreshview (Transact-SQL)
- sp_rename (Transact-SQL)
- sys.views (Transact-SQL)
- UPDATE (Transact-SQL)
- EVENTDATA (Transact-SQL)