Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Koncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Vytvoří virtuální tabulku, jejíž obsah (sloupce a řádky) definuje dotaz. Tento příkaz použijte k vytvoření zobrazení dat v jedné nebo více tabulkách v databázi. Zobrazení lze například použít pro následující účely:
Zaměřit se, zjednodušit a přizpůsobit vnímání každého uživatele v databázi.
Jako bezpečnostní mechanismus tím, že uživatelům umožní přístup k datům prostřednictvím zobrazení, aniž by uživatelé udělili oprávnění k přímému přístupu k podkladovým základním tabulkám.
Poskytnutí zpětně kompatibilního rozhraní pro emulaci tabulky, jejíž schéma se změnilo.
Syntax
Syntaxe pro SQL Server a 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 ]
}
Syntaxe pro Azure Synapse Analytics a paralelní datový sklad
CREATE VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
AS <select_statement>
[;]
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Syntaxe koncového bodu Microsoft Fabric Data Warehouse a SQL Analytics
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>
Arguments
NEBO ALTER
Platí pro: Azure SQL Database a SQL Server (počínaje SQL Serverem 2016 (13.x) SP1).
Podmíněně změní zobrazení pouze v případě, že již existuje.
schema_name
Je název schématu, do kterého zobrazení patří.
view_name
Je název zobrazení. Názvy zobrazení musí dodržovat pravidla pro identifikátory. Zadání jména vlastníka zobrazení je volitelné.
column
Je název, který se má použít pro sloupec v zobrazení. Název sloupce se vyžaduje pouze v případě, že je sloupec odvozen z aritmetického výrazu, funkce nebo konstanty; pokud dva nebo více sloupců může jinak mít stejný název, obvykle kvůli spojení; nebo je-li sloupec v zobrazení zadán jiný název než sloupec, ze kterého je odvozen. Názvy sloupců lze také přiřadit v SELECT příkazu.
Pokud sloupec není zadaný, sloupce zobrazení získávají stejné názvy jako sloupce v SELECT příkazu.
Note
Ve sloupcích zobrazení platí oprávnění pro název sloupce napříč příkazem nebo CREATE VIEW příkazem ALTER VIEW bez ohledu na zdroj podkladových dat. Pokud jsou například oprávnění udělena pro SalesOrderID sloupec v příkazu CREATE VIEW, ALTER VIEW může příkaz pojmenovat SalesOrderID sloupec jiným názvem sloupce, například OrderRefa stále mít oprávnění přidružená k zobrazení pomocí SalesOrderID.
AS
Určuje akce, které má zobrazení provést.
select_statement
Příkaz SELECT , který definuje zobrazení. Příkaz může používat více než jednu tabulku a další zobrazení. K výběru z objektů odkazovaných v SELECT klauzuli vytvořeného zobrazení se vyžadují příslušná oprávnění.
Zobrazení nemusí být podmnožinou řádků a sloupců jedné konkrétní tabulky. Lze vytvořit zobrazení, které používá více než jednu tabulku nebo jiná zobrazení s SELECT klauzulí jakékoli složitosti.
V definici SELECT indexovaného zobrazení musí být příkazem jedna tabulka nebo vícetable JOIN s volitelnou agregací.
Klauzule SELECT v definici zobrazení nesmí obsahovat:
Klauzule
ORDER BY, pokud není v seznamu select příkazuTOPaniSELECTklauzuleImportant
Klauzule
ORDER BYslouží pouze k určení řádků vrácenýchTOPklauzulí neboOFFSETklauzulí v definici zobrazení. KlauzuleORDER BYnezaručuje seřazené výsledky při dotazování, pokudORDER BYnení také zadán v samotném dotazu.Klíčové slovo
INTOKlauzule
OPTIONOdkaz na dočasnou tabulku nebo proměnnou tabulky.
Vzhledem k tomu, že select_statement používá příkaz SELECT , je platný použít rady spojení a rady tabulky, jak je uvedeno v FROM klauzuli. Další informace naleznete v tématu FROM (Transact-SQL) a SELECT (Transact-SQL).
Funkce a více SELECT příkazů oddělených UNION nebo UNION ALL je možné je použít v select_statement.
ZAŠKRTNOUT MOŽNOST
Vynutí, aby všechny příkazy pro úpravy dat provedené v zobrazení dodržovaly kritéria nastavená v rámci select_statement. Když se řádek upraví prostřednictvím zobrazení, WITH CHECK OPTION zajistí, aby data zůstala viditelná prostřednictvím zobrazení po potvrzení změny.
Note
Jediné CHECK OPTION platí pro aktualizace provedené v zobrazení. Nemá žádnou použitelnost pro žádné aktualizace provedené přímo v podkladových tabulkách zobrazení.
ENCRYPTION
platí pro: SQL Server 2008 (10.0.x) a novější a Azure SQL Database.
Zašifruje položky v sys.syscomments , které obsahují text CREATE VIEW příkazu. Použití WITH ENCRYPTION zabraňuje publikování zobrazení v rámci replikace SQL Serveru.
SCHEMABINDING
Vytvoří vazbu zobrazení na schéma podkladové tabulky nebo tabulek. Při SCHEMABINDING zadání nelze základní tabulku nebo tabulky upravit způsobem, který by ovlivnil definici zobrazení. Samotná definice zobrazení musí být nejprve upravena nebo vyřazena, aby se odebraly závislosti na tabulce, která se má upravit. Při použití SCHEMABINDINGmusí select_statement obsahovat názvy dvou částí (schéma).object) tabulek, zobrazení nebo uživatelem definovaných funkcí, na které odkazují. Všechny odkazované objekty musí být ve stejné databázi.
Zobrazení nebo tabulky, které se účastní zobrazení vytvořené pomocí klauzule SCHEMABINDING, nelze vynechat, pokud toto zobrazení nezahodí nebo nezmění tak, aby již nemělo vazbu schématu. V opačném případě databázový stroj vyvolá chybu. Provádění příkazů u tabulek, které se účastní zobrazení s vazbou schématu, ALTER TABLE selže, když tyto příkazy ovlivňují definici zobrazení.
VIEW_METADATA
Určuje, že instance SQL Serveru se vrátí do rozhraní API knihovny DB, ODBC a OLE DB informace o metadatech zobrazení, nikoli základní tabulky nebo tabulek, při vyžádání metadat režimu procházení pro dotaz, který odkazuje na zobrazení. Metadata režimu procházení jsou další metadata, která instance SQL Serveru vrátí do těchto rozhraní API na straně klienta. Tato metadata umožňují rozhraním API na straně klienta implementovat aktualizovatelné kurzory na straně klienta. Metadata v režimu procházení obsahují informace o základní tabulce, do které patří sloupce v sadě výsledků.
U zobrazení vytvořených pomocí VIEW_METADATAmetadat režimu procházení vrátí název zobrazení, nikoli názvy základních tabulek, pokud popisuje sloupce ze zobrazení v sadě výsledků.
Pokud je zobrazení vytvořeno pomocí WITH VIEW_METADATA, všechny jeho sloupce s výjimkou sloupce časového razítka , jsou aktualizovatelné, pokud zobrazení obsahuje INSTEAD OF INSERT nebo INSTEAD OF UPDATE aktivuje. Další informace o aktualizovatelných zobrazeních naleznete v tématu Poznámky.
Remarks
Zobrazení lze vytvořit pouze v aktuální databázi. Musí CREATE VIEW to být první příkaz v dávce dotazu. Zobrazení může mít maximálně 1 024 sloupců.
Při dotazování prostřednictvím zobrazení databázový stroj zkontroluje, zda všechny databázové objekty odkazované kdekoli v příkazu existují a že jsou platné v kontextu příkazu a že příkazy pro úpravy dat neporušují žádná pravidla integrity dat. Kontrola, která selže, vrátí chybovou zprávu. Úspěšná kontrola přeloží akci na akci s podkladovou tabulkou nebo tabulkami.
Pokud zobrazení závisí na tabulce nebo zobrazení, které bylo vyřazeno, databázový stroj vytvoří chybovou zprávu, když se někdo pokusí použít zobrazení. Pokud se vytvoří nová tabulka nebo zobrazení a struktura tabulky se nezmění z předchozí základní tabulky, aby nahradila vyřazenou tabulku, bude možné zobrazení znovu použít. Pokud se nová tabulka nebo struktura zobrazení změní, je nutné zobrazení převést a znovu vytvořit.
Pokud se pomocí klauzule nevytvořilo SCHEMABINDING zobrazení, spusťte sp_refreshview při změnách objektů podkladového zobrazení, které ovlivňují definici zobrazení. V opačném případě může zobrazení při dotazech způsobit neočekávané výsledky.
Při vytvoření zobrazení jsou informace o zobrazení uloženy v následujících zobrazeních katalogu: sys.views, sys.columns a sys.sql_expression_dependencies. Text CREATE VIEW příkazu je uložen v zobrazení katalogu sys.sql_modules .
Dotaz, který používá index v zobrazení definovaném číselnými nebo plovoucími výrazy, může mít výsledek, který se liší od podobného dotazu, který v zobrazení nepoužívá index. Tento rozdíl může být způsoben zaokrouhlením chyb během INSERT, DELETEnebo UPDATE akcí v podkladových tabulkách.
Databázový stroj uloží nastavení SET QUOTED_IDENTIFIER a SET ANSI_NULLS při vytvoření zobrazení. Tato původní nastavení slouží k analýze zobrazení při použití zobrazení. Proto všechna nastavení relace klienta pro SET QUOTED_IDENTIFIER a SET ANSI_NULLS nemají vliv na definici zobrazení při přístupu k zobrazení.
V Azure Synapse Analytics zobrazení nepodporují vazbu schématu. Proto pokud jsou provedeny změny v podkladových objektech, měli byste zobrazení odstranit a znovu vytvořit, aby se aktualizovala podkladová metadata. Další informace najdete v tématu Zobrazení T-SQL s vyhrazeným fondem SQL a bezserverovým fondem SQL ve službě Azure Synapse Analytics.
V Azure Synapse Analytics se nepodporují aktualizovatelná zobrazení, triggery DML (typu AFTER nebo INSTEAD OF) a dělené zobrazení. Další informace najdete v tématu Zobrazení T-SQL s vyhrazeným fondem SQL a bezserverovým fondem SQL ve službě Azure Synapse Analytics.
V Azure Synapse Analytics se rozdělená zobrazení nepodporují. Další informace najdete v tématu Zobrazení T-SQL s vyhrazeným fondem SQL a bezserverovým fondem SQL ve službě Azure Synapse Analytics.
V databázi FABRIC SQL je možné vytvořit zobrazení, ale nejsou zrcadlené do Fabric OneLake. Další informace naleznete v tématu Omezení zrcadlení databáze Fabric SQL.
Aktualizovatelné pohledy
Data podkladové základní tabulky můžete upravit pomocí zobrazení, pokud jsou splněné následující podmínky:
Jakékoli úpravy, včetně
UPDATEINSERT, aDELETEpříkazů, musí odkazovat na sloupce pouze z jedné základní tabulky.Sloupce upravené v zobrazení musí přímo odkazovat na podkladová data ve sloupcích tabulky. Sloupce nelze odvodit jiným způsobem, například pomocí následujících:
Agregační funkce: , , ,
AVGCOUNTSUMMINMAX,GROUPING,STDEV, a .STDEVPVARVARPVýpočt. Sloupec nelze vypočítat z výrazu, který používá jiné sloupce. Sloupce, které jsou vytvořeny pomocí operátory sady UNION, UNION ALL, CROSSJOIN, EXCEPT a INTERSECT množství pro výpočet a nejsou také aktualizovatelné.
Upravované sloupce nejsou ovlivněny
GROUP BYklauzulí ,HAVINGaniDISTINCTklauzulí.Top se nepoužívá nikde v select_statement zobrazení společně s klauzulí
WITH CHECK OPTION.
Předchozí omezení platí pro všechny poddotazy v klauzuli FROM zobrazení stejně jako u samotného zobrazení. Obecně platí, že databázový stroj musí být schopen jednoznačně sledovat úpravy z definice zobrazení do jedné základní tabulky. Další informace naleznete v tématu Úprava dat prostřednictvím zobrazení.
Pokud předchozí omezení brání úpravě dat přímo prostřednictvím zobrazení, zvažte následující možnosti:
MÍSTO aktivačních událostí
INSTEAD OFTriggery je možné vytvořit v zobrazení, aby bylo možné zobrazení aktualizovat. TriggerINSTEAD OFse spustí místo příkazu pro úpravu dat, na kterém je aktivační událost definována. Tento trigger umožňuje uživateli určit sadu akcí, ke kterým musí dojít ke zpracování příkazu pro úpravu dat. Proto pokud aktivační událost existuje pro zobrazení konkrétníhoINSTEAD OFpříkazu pro úpravu dat (INSERTUPDATE, neboDELETE), odpovídající zobrazení je možné aktualizovat prostřednictvím tohoto příkazu. Další informace o aktivačních událostech najdete vINSTEAD OFtématu Triggery DML.Rozdělené pohledy
Pokud je zobrazení rozdělené do oddílů, je zobrazení aktualizovatelné a podléhá určitým omezením. V případě potřeby databázový stroj rozlišuje místní rozdělená zobrazení jako zobrazení, ve kterých jsou všechny zúčastněné tabulky a zobrazení na stejné instanci SQL Serveru, a distribuovaná rozdělená zobrazení jako zobrazení, ve kterých se alespoň jedna z tabulek v zobrazení nachází na jiném nebo vzdáleném serveru.
Dělené zobrazení
Rozdělené zobrazení je zobrazení definované UNION ALL členskou tabulkou strukturovanou stejným způsobem, ale ukládá se samostatně jako více tabulek ve stejné instanci SQL Serveru nebo ve skupině autonomních instancí serverů SQL Serveru, označovaných jako federované databázové servery.
Note
Upřednostňovaná metoda rozdělení dat na jeden server je prostřednictvím dělených tabulek. Další informace najdete v tématu dělené tabulky a indexy.
Při návrhu schématu dělení musí být jasné, jaká data patří do každého oddílu. Například data pro tabulku se distribuují Customers do tří členských tabulek ve třech serverových umístěních: Customers_33 on Server1, Customers_66 on Server2a Customers_99 on Server3.
Rozdělené zobrazení Server1 je definováno následujícím způsobem:
--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;
Obecně platí, že zobrazení je rozdělené zobrazení, pokud se jedná o následující formulář:
SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn;
Podmínky pro vytváření dělených zobrazení
Výběr
listV seznamu sloupců definice zobrazení vyberte všechny sloupce v tabulkách členů.
Ujistěte se, že sloupce ve stejné řadové pozici každého
select listtypu mají stejný typ, včetně kolací. Není dostačující, aby sloupce byly implicitně konvertibilní typy, stejně jako obecně platí proUNION.Také alespoň jeden sloupec (například
<col>) musí být ve všech vybraných seznamech ve stejné řadové pozici. Definujte<col>tak, aby členské tabulkyT1, ..., Tnměly definovaná omezeníC1, ..., CnCHECK v<col>uvedeném pořadí.C1Omezení definované v tabulceT1musí mít následující tvar: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 >Omezení musí být takovým způsobem, aby jakákoli zadaná hodnota
<col>maximálně splňovala jedno z omezeníC1, ..., Cn, aby omezení vytvořila sadu nesouvisejících nebo nepřekryvných intervalů. Sloupec<col>, na kterém jsou definována oddělená omezení, se nazývá sloupec dělení. Sloupec dělení může mít v podkladových tabulkách různé názvy. Omezení musí být v povoleném a důvěryhodném stavu, aby splňovaly dříve uvedené podmínky sloupce dělení. Pokud jsou omezení zakázaná, znovu povolte kontrolu omezení pomocíCHECK CONSTRAINT *constraint_name*možnostiALTER TABLEa pomocíWITH CHECKmožnosti je ověřte.Následující příklady ukazují platné sady omezení:
{ [col < 10], [col between 11 and 20] , [col > 20] } { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }Stejný sloupec nelze použít vícekrát v seznamu výběru.
Sloupec dělení
Sloupec dělení je součástí primárního klíče tabulky.
Nemůže se jednat o počítaný sloupec, identitu, výchozí nebo časové razítko .
Pokud je ve stejném sloupci v tabulce členů více omezení, databázový stroj ignoruje všechna omezení a při určování, jestli je zobrazení rozdělené do oddílů, nebere v úvahu. Pokud chcete splnit podmínky rozděleného zobrazení, ujistěte se, že ve sloupci dělení existuje pouze jedno omezení dělení.
Pro aktualizovatelnost sloupce dělení neexistují žádná omezení.
Členské tabulky nebo podkladové tabulky
T1, ..., TnTyto tabulky můžou být buď místní tabulky, nebo tabulky z jiných počítačů, na kterých běží SQL Server, na které se odkazuje, a to buď prostřednictvím čtyřdílného názvu, nebo názvu založeného na OPENDATASOURCE nebo OPENROWSET. Syntaxe OPENDATASOURCE a OPENROWSET může zadat název tabulky, ale ne předávací dotaz. Další informace naleznete v tématu OPENDATASOURCE (Transact-SQL) a OPENROWSET (Transact-SQL).
Pokud jsou některé členské tabulky vzdálené, zobrazení se nazývá distribuované rozdělené zobrazení a platí další podmínky. Jsou popsány dále v této části.
Stejná tabulka se nemůže v sadě tabulek, které se kombinují s příkazem
UNION ALL, zobrazit dvakrát.Členské tabulky nemohou mít indexy vytvořené na počítaných sloupcích v tabulce.
Členské tabulky mají všechna omezení PRIMÁRNÍHO KLÍČE na stejný počet sloupců.
Všechny členské tabulky v zobrazení mají stejné nastavení odsazení ANSI. Tuto možnost lze nastavit pomocí možnosti uživatele nebo
sp_configurepříkazu SET.
Podmínky pro úpravu dat v dělených zobrazeních
Následující omezení platí pro příkazy, které upravují data v rozdělených zobrazeních:
Příkaz
INSERTposkytuje hodnoty pro všechny sloupce v zobrazení, i když mají podkladové členské tabulkyDEFAULTomezení pro tyto sloupce nebo pokud umožňujíNULLhodnoty. Pro sloupce členské tabulky, které majíDEFAULTdefinice, příkazy nemohou explicitně použít klíčové slovoDEFAULT.Hodnota vložená do sloupce dělení splňuje alespoň jedno z podkladových omezení; jinak akce vložení selže s porušením omezení.
UPDATEpříkazy nemohou zadatDEFAULTklíčové slovo jako hodnotu vSETklauzuli, i když sloupec má hodnotu definovanouDEFAULTv odpovídající členské tabulce.Sloupce v zobrazení, které jsou sloupcem identity v jedné nebo více členských tabulkách, nelze upravit pomocí
INSERTpříkazu neboUPDATEpříkazu.Pokud jedna z tabulek členů obsahuje sloupec časového razítka , nelze data změnit pomocí
INSERTpříkazu neboUPDATEpříkazu.Pokud jedna z členských tabulek obsahuje aktivační událost nebo
ON UPDATE CASCADE/SET NULL/SET DEFAULTON DELETE CASCADE/SET NULL/SET DEFAULTomezení, nelze zobrazení upravit.INSERT,UPDATEaDELETEakce proti děleným zobrazením nejsou povoleny, pokud existuje spojení se stejným zobrazením nebo s některou z tabulek členů v příkazu.Hromadné importování dat do rozděleného zobrazení není podporováno
bcppomocí příkazů neboBULK INSERTINSERT ... SELECT * FROM OPENROWSET(BULK...)příkazů. Do rozděleného zobrazení ale můžete vložit více řádků pomocí příkazu INSERT .Note
Pokud chcete aktualizovat rozdělené zobrazení, musí mít
INSERTUPDATEuživatel oprávnění aDELETEoprávnění k tabulkám členů.
Další podmínky pro distribuovaná dělená zobrazení
Pro distribuovaná dělená zobrazení (pokud jsou vzdálená jedna nebo více členských tabulek), platí následující další podmínky:
Distribuovaná transakce se spustí, aby se zajistila atomicita napříč všemi uzly ovlivněnými aktualizací.
XACT_ABORT SETNastavte možnost proONINSERT,UPDATEneboDELETEpříkazy, které mají fungovat.Všechny sloupce ve vzdálených tabulkách typu smallmoney , na které se odkazuje v děleném zobrazení, se mapují jako peníze. Proto odpovídající sloupce (ve stejném pořadí v seznamu výběrů) v místních tabulkách musí být také typu peníze.
V rámci úrovně kompatibility databáze 110 a vyšší jsou všechny sloupce ve vzdálených tabulkách typu smalldatetime , na které se odkazuje v děleném zobrazení, mapovány jako smalldatetime. Odpovídající sloupce (ve stejném pořadí v seznamu výběrů) v místních tabulkách musí být smalldatetime. Jedná se o změnu chování ze starších verzí SQL Serveru, ve kterém všechny sloupce ve vzdálených tabulkách typu smalldatetime , na které se odkazuje v děleném zobrazení, se mapují jako datum a čas a odpovídající sloupce v místních tabulkách musí být typu datetime. Další informace naleznete v tématu ALTER DATABASE Úroveň kompatibility (Transact-SQL).
Žádný propojený server v rozděleném zobrazení nemůže být propojeným serverem zpětné smyčky. Jedná se o propojený server, který odkazuje na stejnou instanci SQL Serveru.
Nastavení SET ROWCOUNT možnosti je ignorováno pro INSERTUPDATE, a DELETE akce, které zahrnují aktualizovatelné dělené zobrazení a vzdálené tabulky.
Když jsou zavedeny členské tabulky a definice rozděleného zobrazení, optimalizátor dotazů SQL Serveru sestaví inteligentní plány, které efektivně používají dotazy pro přístup k datům z členských tabulek.
CHECK S definicemi omezení mapuje procesor dotazů distribuci hodnot klíčů napříč tabulkami členů. Když uživatel vydá dotaz, procesor dotazů porovná mapu s hodnotami zadanými v WHERE klauzuli a sestaví plán provádění s minimálním objemem přenosu dat mezi členskými servery. Proto pokud jsou některé členské tabulky umístěné na vzdálených serverech, instance SQL Serveru překládá distribuované dotazy tak, aby množství distribuovaných dat, která je potřeba přenést, bylo minimální.
Důležité informace o replikaci
Pokud chcete vytvořit rozdělená zobrazení pro členské tabulky, které jsou součástí replikace, platí následující aspekty:
Pokud jsou podkladové tabulky zapojeny do slučovací replikace nebo transakční replikace s aktualizací předplatných, ujistěte se, že sloupec uniqueidentifier je také zahrnut do seznamu výběrů.
Všechny
INSERTakce v děleném zobrazení musí obsahovatNEWID()hodnotu sloupce uniqueidentifier . Všechny akce UPDATE pro sloupec uniqueidentifier musí být zadanáNEWID()jako hodnota, protože výchozí klíčové slovo nelze použít.Replikace aktualizací provedených pomocí zobrazení je stejná jako při replikaci tabulek ve dvou různých databázích: tabulky obsluhují různí agenti replikace a pořadí aktualizací není zaručené.
Permissions
Vyžaduje oprávnění CREATE VIEW v databázi a ALTER oprávnění ke schématu, ve kterém se zobrazení vytváří.
Examples
Následující příklady používají AdventureWorks2025 databázi nebo AdventureWorksDW2025 databázi.
A. Vytvoření zobrazení pomocí funkce CREATE VIEW
Následující příklad vytvoří zobrazení pomocí SELECT příkazu. Jednoduché zobrazení je užitečné, když se často dotazuje kombinace sloupců. Data z tohoto pohledu pocházejí z tabulek HumanResources.Employee a Person.Person z databáze AdventureWorks2025. Data poskytují informace o datu jména a přijetí pro zaměstnance Adventure Works Cycles. Zobrazení může být vytvořeno pro osobu, která má na starosti sledování pracovních výročí, ale bez toho, aby tato osoba získala přístup ke všem datům v těchto tabulkách.
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. Použití S ŠIFROVÁNÍM
Následující příklad používá WITH ENCRYPTION možnost a zobrazuje vypočítané sloupce, přejmenované sloupce a více sloupců.
Platí pro: SQL Server 2008 (10.0.x) a novější a 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. Použití FUNKCE CHECK OPTION
Následující příklad ukazuje zobrazení, dbo.SeattleOnly které odkazuje na pět tabulek a umožňuje úpravám dat použít pouze zaměstnance, kteří žijí v Seattlu.
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. Použití předdefinovaných funkcí v zobrazení
Následující příklad ukazuje definici zobrazení, která obsahuje integrovanou funkci. Při použití funkcí je nutné zadat název sloupce pro odvozený sloupec.
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. Použití dělených dat
Následující příklad používá tabulky s názvem SUPPLY1, SUPPLY2, SUPPLY3, a SUPPLY4. Tyto tabulky odpovídají tabulkám dodavatelů ze čtyř poboček umístěným v různých oblastech.
--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
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
F. Vytvoření zobrazení spojením dvou tabulek
Následující příklad vytvoří zobrazení pomocí SELECT příkazu s .OUTER JOIN Výsledky dotazu spojení naplní zobrazení.
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);
Související obsah
- ZMĚNIT TABULKU (Transact-SQL)
- ZMĚNIT ZOBRAZENÍ (Transact-SQL)
- DELETE (Transact-SQL)
- DROP VIEW (Transact-SQL)
- INSERT (Transact-SQL)
- vytvoření uložené procedury
- 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)
- AKTUALIZACE (Transact-SQL)
- EVENTDATA (Transact-SQL)