CREATE VIEW
Syntax
CREATE [ IF NOT EXISTS / OR REPLACE ] [ SQL SECURITY INVOKER ] VIEW [schéma.]jméno_dotazu [ ( jméno_sloupce {, jméno_sloupce }… ) ]
AS dotazový_výraz
Popis
Príkaz jazyka SQL
Príkaz CREATE VIEW vytvorí pevný dopyt uložený v databáze. Základom dopytu je dopytový výraz, ktorý vyberie množinu záznamov z jednej alebo viacerých tabuliek. Názvy stĺpcov v odpovedi na dopytový výraz možno zmeniť uvedením zoznamu mien v zátvorkách pred vyhradeným slovom AS.
V databáze je uložená iba textová definícia dotazu. Pri každom otvorení (použití) sa odpoveď generuje z aktuálnych dát.
Príklady
Máme tabulku LIDÉ v níž evidujeme údaje o zaměstnanci ve firmě. Obsahuje sloupce ID, JMÉNO, PŘÍJMENÍ, RODNÉ_ČÍSLO, VZDĚLÁNÍ. Uživatelům budeme chtít zpřístupnit údaje z této tabulky, vyjma rodných čísel:
Uživatelé budou pracovat s pohledem LIDÉ_BEZ_RC, jako by to byla normální tabulka. Takže pokud bude chtít uživatel zobrazit seznam všech vysokoškolsky vzdělaných lidí, zapíše následující dotaz:
Dále lze view použít pro změnu názvů i formátů sloupců. Vytvoříme pohled, který bude mít stejnou strukturu jako tabulka LIDÉ, jediný rozdíl bude v tom, že JMÉNO a PŘÍJMENÍ bude jako jeden sloupec s názvem CELÉ_JMÉNO:
CREATE VIEW lidé2 (id, celé_jméno, rodné_číslo, vzdělání) AS
SELECT id, příjmení+','+' '+jméno, rodné_číslo, vzdělání
FROM lidé
SELECT id, příjmení+','+' '+jméno, rodné_číslo, vzdělání
FROM lidé
Pohledy nemusíme používat jen ve spojení se sloupci. Můžeme také využít restrikce a omezit tak i některé řádky. Např. sekretářka bude mít právo manipulovat pouze se záznamy středoškoláků. View, které pro ni vytvoříme, bude vypadat následovně:
Poslední příklad uvedu pro případ tvorby pohledu skrz více tabulek. V naší firmě bude skupina ekonomů, která má právo vědět, kolik má kdo základní plat, ale už nechceme, aby měli přístup k osobnímu ohodnocení. Mějme tabulku LIDÉ a dále tabulku PLATY, která obsahuje sloupce ID_OSOBA, ZÁKL_PLAT, OSOBNÍ, PŘÍPL_VEDENÍ. Pro ekonomy zkonstruujeme následující pohled:
CREATE VIEW osoby_platy AS
SELECT id, jméno, příjmení, zákl_plat
FROM lidé, platy
WHERE lidé.id = platy.id_osoba
SELECT id, jméno, příjmení, zákl_plat
FROM lidé, platy
WHERE lidé.id = platy.id_osoba
Dále pohledy můžeme využít v souvislosti s vnořováním dotazů. Pokud máme v našem informačním systému několik SQL dotazů, ve kterých se nám nějaký subdotaz dost často opakuje, můžeme si pro něj vytvořit view, na které se budeme pak v dotazech odkazovat.
Pozri aj
DROP VIEW, SHOW CREATE VIEW