Podsumowanie :ten samouczek pokazuje, jak używać klauzuli łączenia wewnętrznego SQLite do wysyłania zapytań o dane z wielu tabel.
Wprowadzenie do klauzuli łączenia wewnętrznego SQLite
W relacyjnych bazach danych dane są często rozmieszczane w wielu powiązanych tabelach. Tabela jest powiązana z inną tabelą za pomocą kluczy obcych.
Aby zapytać o dane z wielu tabel, użyj INNER JOIN
klauzula. INNER JOIN
klauzula łączy kolumny ze skorelowanych tabel.
Załóżmy, że masz dwie tabele:A i B.
A ma kolumny a1, a2 i f. B ma kolumnę b1, b2 i f. Tabela A łączy się z tabelą B za pomocą kolumny klucza obcego o nazwie f.
Poniższa ilustracja ilustruje składnię wewnętrznej klauzuli join:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Dla każdego wiersza w tabeli A INNER JOIN
porównuje wartość kolumny f z wartością kolumny f w tabeli B. Jeśli wartość kolumny f w tabeli A jest równa wartości kolumny f w tabeli B, łączy dane z kolumn a1, a2, b1, b2, i włącza ten wiersz do zestawu wyników.
Innymi słowy, INNER JOIN
klauzula zwraca wiersze z tabeli A, która ma odpowiedni wiersz w tabeli B.
Ta logika jest stosowana, jeśli dołączysz do więcej niż 2 stołów.
Zobacz poniższy przykład.
Tylko wiersze w tabeli A:(a1,1), (a3,3) mają odpowiadające wiersze w tabeli B (b1,1), (b2,3) są uwzględnione w zestawie wyników.
Poniższy diagram ilustruje INNER JOIN
klauzula:
SQLite INNER JOIN
przykłady
Rzućmy okiem na tracks
i albums
tabele w przykładowej bazie danych. tracks
tabela łączy do albums
tabela przez AlbumId
kolumna.
W tracks
tabeli, AlbumId
kolumna jest kluczem obcym. Oraz w albums
tabeli, AlbumId
jest kluczem podstawowym.
Aby zapytać o dane z obu tracks
i albums
tabele, użyj następującego stwierdzenia:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Dla każdego wiersza w tabeli utworów SQLite używa wartości z albumid
kolumna tracks
tabela do porównania z wartością w albumid
albums
stół. Jeśli SQLite znajdzie dopasowanie, łączy dane z wierszy w obu tabelach w zestawie wyników.
Możesz dołączyć AlbumId
kolumny z obu tabel w końcowym zestawie wyników, aby zobaczyć efekt.
SELECT
trackid,
name,
tracks.albumid AS album_id_tracks,
albums.albumid AS album_id_albums,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Sprzężenie wewnętrzne SQLite – przykład 3 tabel
Zobacz następujące tabele:tracks
albums
i artists
Jeden utwór należy do jednego albumu, a jeden album zawiera wiele utworów. tracks
tabela powiązana z albums
tabela przez albumid
kolumna.
Jeden album należy do jednego artysty, a jeden artysta ma jeden lub wiele albumów. albums
tabela zawiera linki do artists
tabela przez artistid
kolumna.
Aby wykonać zapytanie o dane z tych tabel, musisz użyć dwóch klauzul sprzężenia wewnętrznego w SELECT
oświadczenie w następujący sposób:
SELECT
trackid,
tracks.name AS track,
albums.title AS album,
artists.name AS artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Możesz użyć klauzuli WHERE, aby uzyskać utwory i albumy artysty o identyfikatorze 10, jako następujące stwierdzenie:
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
WHERE
artists.artistid = 10;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite INNER JOIN
klauzula do zapytania o dane z wielu tabel.