Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite CREATE VIEW
oświadczenie, aby utworzyć nowy widok w bazie danych.
Co to jest widok
W teorii baz danych widok jest zbiorem wyników zapisanego zapytania. Widok to sposób na spakowanie zapytania do nazwanego obiektu przechowywanego w bazie danych.
Dostęp do danych tabel źródłowych można uzyskać za pośrednictwem widoku. Tabele, do których odnosi się zapytanie w definicji widoku, nazywane są tabelami podstawowymi.
Widok jest przydatny w niektórych przypadkach:
- Po pierwsze, widoki zapewniają warstwę abstrakcji nad tabelami. Możesz dodawać i usuwać kolumny w widoku bez dotykania schematu tabel bazowych.
- Po drugie, możesz użyć widoków do enkapsulacji złożonych zapytań z połączeniami, aby uprościć dostęp do danych.
Widok SQLite jest tylko do odczytu. Oznacza to, że nie możesz użyć INSERT
, DELETE
i UPDATE
instrukcje aktualizowania danych w tabelach podstawowych za pośrednictwem widoku.
SQLite CREATE VIEW
oświadczenie
Aby utworzyć widok, użyj CREATE VIEW
oświadczenie w następujący sposób:
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
AS
select-statement;
Code language: SQL (Structured Query Language) (sql)
Najpierw określ nazwę widoku. IF NOT EXISTS
opcja tworzy nowy widok tylko wtedy, gdy nie istnieje. Jeśli widok już istnieje, nic nie robi.
Po drugie, użyj TEMP
lub TEMPORARY
opcję, jeśli chcesz, aby widok był widoczny tylko w bieżącym połączeniu z bazą danych. Widok nazywany jest widokiem tymczasowym, a SQLite automatycznie usuwa widok tymczasowy za każdym razem, gdy połączenie z bazą danych zostaje zamknięte.
Po trzecie, określ SELECT
oświadczenie dla widoku. Domyślnie kolumny widoku pochodzą z zestawu wyników SELECT
oświadczenie. Możesz jednak przypisać nazwy kolumn widoku, które różnią się od nazwy kolumny tabeli
SQLite CREATE VIEW
przykłady
Weźmy kilka przykładów tworzenia nowego widoku za pomocą CREATE VIEW
oświadczenie.
1) Tworzenie widoku w celu uproszczenia złożonego zapytania
Następujące zapytanie pobiera dane z tracks
, albums
, media_types
i genres
tabele w przykładowej bazie danych za pomocą klauzuli inner join.
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)
Wypróbuj
Aby utworzyć widok na podstawie tego zapytania, użyj następującej instrukcji:
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)
Wypróbuj
Od teraz możesz użyć następującego prostego zapytania zamiast złożonego powyżej.
SELECT * FROM v_tracks;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
2) Tworzenie widoku z niestandardowymi nazwami kolumn
Poniższa instrukcja tworzy widok o nazwie v_albums
który zawiera tytuł albumu i długość albumu w minutach:
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)
W tym przykładzie określiliśmy nowe kolumny dla widoku AlbumTitle
dla albums.title
kolumna i minuty dla wyrażenia SUM(milliseconds) / 60000
To zapytanie zwraca dane z v_albums
widok:
SELECT * FROM v_albums;
Code language: SQL (Structured Query Language) (sql)
W tym samouczku nauczyłeś się widoków bazy danych i sposobu korzystania z CREATE VIEW
instrukcja do tworzenia nowych widoków w SQLite.