Sammanfattning :i denna handledning kommer du att lära dig hur du använder SQLite CREATE VIEW
för att skapa en ny vy i databasen.
Vad är en vy
I databasteorin är en vy en resultatuppsättning av en lagrad fråga. En vy är sättet att packa en fråga i ett namngivet objekt lagrat i databasen.
Du kan komma åt data för de underliggande tabellerna genom en vy. Tabellerna som frågan i vydefinitionen refererar till kallas bastabeller.
En vy är användbar i vissa fall:
- För det första ger vyer ett abstraktionslager över tabeller. Du kan lägga till och ta bort kolumnerna i vyn utan att röra schemat för de underliggande tabellerna.
- För det andra kan du använda vyer för att kapsla in komplexa frågor med kopplingar för att förenkla dataåtkomsten.
SQLite-vyn är skrivskyddad. Det betyder att du inte kan använda INSERT
, DELETE
och UPDATE
satser för att uppdatera data i bastabellerna genom vyn.
SQLite CREATE VIEW
uttalande
För att skapa en vy använder du CREATE VIEW
uttalande enligt följande:
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
AS
select-statement;
Code language: SQL (Structured Query Language) (sql)
Ange först ett namn för vyn. IF NOT EXISTS
alternativet skapar bara en ny vy om den inte finns. Om vyn redan finns gör den ingenting.
För det andra, använd TEMP
eller TEMPORARY
alternativet om du vill att vyn endast ska vara synlig i den aktuella databasanslutningen. Vyn kallas en temporär vy och SQLite tar automatiskt bort den tillfälliga vyn när databasanslutningen stängs.
För det tredje, ange en SELECT
uttalande för synen. Som standard härrör vyns kolumner från resultatuppsättningen för SELECT
påstående. Du kan dock tilldela namnen på vykolumnerna som skiljer sig från tabellens kolumnnamn
SQLite CREATE VIEW
exempel
Låt oss ta några exempel på hur du skapar en ny vy med CREATE VIEW
uttalande.
1) Skapa en vy för att förenkla en komplex fråga
Följande fråga hämtar data från tracks
, albums
, media_types
och genres
tabeller i exempeldatabasen med hjälp av inner join-satsen.
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)
Prova det
För att skapa en vy baserad på den här frågan använder du följande sats:
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)
Prova det
Från och med nu kan du använda följande enkla fråga istället för den komplexa ovan.
SELECT * FROM v_tracks;
Code language: SQL (Structured Query Language) (sql)
Prova det
2) Skapa en vy med anpassade kolumnnamn
Följande sats skapar en vy som heter v_albums
som innehåller albumtitel och albumets längd i minuter:
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)
I det här exemplet specificerade vi nya kolumner för vyn AlbumTitle
för albums.title
kolumn och minuter för uttrycket SUM(milliseconds) / 60000
Den här frågan returnerar data från v_albums
visa:
SELECT * FROM v_albums;
Code language: SQL (Structured Query Language) (sql)
I den här handledningen har du lärt dig om databasvyer och hur du använder CREATE VIEW
för att skapa nya vyer i SQLite.