Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite CREATE VIEW
sætning for at oprette en ny visning i databasen.
Hvad er en udsigt
I databaseteori er en visning et resultatsæt af en lagret forespørgsel. En visning er måden at pakke en forespørgsel ind i et navngivet objekt gemt i databasen.
Du kan få adgang til dataene i de underliggende tabeller gennem en visning. Tabellerne, som forespørgslen i visningsdefinitionen refererer til, kaldes basistabeller.
En visning er nyttig i nogle tilfælde:
- For det første giver visninger et abstraktionslag over tabeller. Du kan tilføje og fjerne kolonnerne i visningen uden at røre ved skemaet for de underliggende tabeller.
- For det andet kan du bruge visninger til at indkapsle komplekse forespørgsler med joinforbindelser for at forenkle dataadgangen.
SQLite-visning er skrivebeskyttet. Det betyder, at du ikke kan bruge INSERT
, SLET
og OPDATERING
sætninger for at opdatere data i basistabellerne gennem visningen.
SQLite OPRET VISNING
erklæring
For at oprette en visning skal du bruge CREATE VIEW
erklæring som følger:
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
AS
select-statement;
Code language: SQL (Structured Query Language) (sql)
Angiv først et navn til visningen.
For det andet skal du bruge TEMP
eller MIDLERTIDIG
mulighed, hvis du ønsker, at visningen kun skal være synlig i den aktuelle databaseforbindelse. Visningen kaldes en midlertidig visning, og SQLite fjerner automatisk den midlertidige visning, når databaseforbindelsen lukkes.
For det tredje skal du angive en SELECT
erklæring for synspunktet. Som standard stammer kolonnerne i visningen fra resultatsættet af SELECT
udmelding. Du kan dog tildele navnene på de visningskolonner, der er forskellige fra kolonnenavnet i tabellen
SQLite OPRET VISNING
eksempler
Lad os tage nogle eksempler på at oprette en ny visning ved hjælp af CREATE VIEW
erklæring.
1) Oprettelse af en visning for at forenkle en kompleks forespørgsel
Følgende forespørgsel henter data fra sporene
, albums
, medietyper
og genrer
tabeller i eksempeldatabasen ved hjælp af den indre join-klausul.
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)
Prøv det
For at oprette en visning baseret på denne forespørgsel, bruger du følgende sætning:
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)
Prøv det
Fra nu af kan du bruge følgende simple forespørgsel i stedet for den komplekse ovenfor.
SELECT * FROM v_tracks;
Code language: SQL (Structured Query Language) (sql)
Prøv det
2) Oprettelse af en visning med brugerdefinerede kolonnenavne
Følgende sætning opretter en visning med navnet v_albums
der indeholder albumtitel og albumlængden i minutter:
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 dette eksempel specificerede vi nye kolonner for visningen AlbumTitle
for albums.title
kolonne og minutter for udtrykket SUM(millisekunder) / 60000
Denne forespørgsel returnerer data fra v_albums
se:
SELECT * FROM v_albums;
Code language: SQL (Structured Query Language) (sql)
I dette selvstudie har du lært om databasevisninger og hvordan du bruger CREATE VIEW
sætning for at oprette nye visninger i SQLite.