Shrnutí :v tomto tutoriálu se naučíte používat SQLite CREATE VIEW
příkaz k vytvoření nového pohledu v databázi.
Co je zobrazení
V teorii databází je pohled výslednou sadou uloženého dotazu. Pohled je způsob, jak zabalit dotaz do pojmenovaného objektu uloženého v databázi.
K datům podkladových tabulek můžete přistupovat prostřednictvím pohledu. Tabulky, na které dotaz v definici pohledu odkazuje, se nazývají základní tabulky.
Zobrazení je v některých případech užitečné:
- Za prvé, pohledy poskytují nad tabulkami vrstvu abstrakce. Sloupce v zobrazení můžete přidávat a odebírat, aniž byste se dotkli schématu podkladových tabulek.
- Zadruhé můžete použít zobrazení k zapouzdření složitých dotazů do spojení, abyste zjednodušili přístup k datům.
Zobrazení SQLite je pouze pro čtení. To znamená, že nemůžete použít INSERT
, DELETE
a UPDATE
příkazy k aktualizaci dat v základních tabulkách prostřednictvím pohledu.
SQLite CREATE VIEW
prohlášení
Chcete-li vytvořit pohled, použijte CREATE VIEW
prohlášení takto:
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
AS
select-statement;
Code language: SQL (Structured Query Language) (sql)
Nejprve zadejte název pohledu. IF NOT EXISTS
možnost vytvoří nový pohled pouze v případě, že neexistuje. Pokud pohled již existuje, nedělá nic.
Za druhé, použijte TEMP
nebo TEMPORARY
Pokud chcete, aby byl pohled viditelný pouze v aktuálním připojení k databázi. Pohled se nazývá dočasný pohled a SQLite automaticky odebere dočasný pohled při každém uzavření databázového připojení.
Za třetí, zadejte SELECT
prohlášení pro pohled. Ve výchozím nastavení jsou sloupce pohledu odvozeny od sady výsledků SELECT
prohlášení. Můžete však přiřadit názvy sloupců zobrazení, které se liší od názvu sloupce tabulky
SQLite CREATE VIEW
příklady
Podívejme se na několik příkladů vytvoření nového pohledu pomocí CREATE VIEW
prohlášení.
1) Vytvoření pohledu pro zjednodušení složitého dotazu
Následující dotaz získává data ze tracks
, albums
, media_types
a genres
tabulky ve vzorové databázi pomocí klauzule vnitřního spojení.
SELECT
trackid,
tracks.name,
albums.Title AS album,
media_types.Name AS media,
genres.Name AS genres
FROM
tracks
INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
INNER JOIN genres ON genres.GenreId = tracks.GenreId;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Chcete-li vytvořit pohled založený na tomto dotazu, použijte následující příkaz:
CREATE VIEW v_tracks
AS
SELECT
trackid,
tracks.name,
albums.Title AS album,
media_types.Name AS media,
genres.Name AS genres
FROM
tracks
INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
INNER JOIN genres ON genres.GenreId = tracks.GenreId;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Od této chvíle můžete místo výše uvedeného složitého dotazu používat následující jednoduchý dotaz.
SELECT * FROM v_tracks;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
2) Vytvoření pohledu s vlastními názvy sloupců
Následující příkaz vytvoří pohled s názvem v_albums
který obsahuje název alba a délku alba v minutách:
CREATE VIEW v_albums (
AlbumTitle,
Minutes
)
AS
SELECT albums.title,
SUM(milliseconds) / 60000
FROM tracks
INNER JOIN
albums USING (
AlbumId
)
GROUP BY AlbumTitle;
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu jsme zadali nové sloupce pro zobrazení AlbumTitle
pro albums.title
sloupec a minuty pro výraz SUM(milliseconds) / 60000
Tento dotaz vrací data z v_albums
zobrazit:
SELECT * FROM v_albums;
Code language: SQL (Structured Query Language) (sql)
V tomto tutoriálu jste se dozvěděli o zobrazeních databáze a o tom, jak používat CREATE VIEW
příkaz k vytvoření nových pohledů v SQLite.