Resumo : este tutorial mostra como usar a cláusula de junção interna SQLite para consultar dados de várias tabelas.
Introdução à cláusula de junção interna SQLite
Em bancos de dados relacionais, os dados geralmente são distribuídos em muitas tabelas relacionadas. Uma tabela é associada a outra tabela usando chaves estrangeiras .
Para consultar dados de várias tabelas, você usa INNER JOIN
a cláusula. A INNER JOIN
cláusula combina colunas de tabelas correlacionadas.
Suponha que você tenha duas tabelas: A e B.
A tem colunas a1, a2 e f. B tem colunas b1, b2 e f. A tabela A vincula-se à tabela B usando uma coluna de chave estrangeira chamada f.
O seguinte ilustra a sintaxe da cláusula inner join:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para cada linha da tabela A, a INNER JOIN
cláusula compara o valor da coluna f com o valor da coluna f da tabela B. Se o valor da coluna f na tabela A for igual ao valor da coluna f na tabela B, ele combina dados das colunas a1, a2, b1, b2 e inclui esta linha no conjunto de resultados.
Em outras palavras, a INNER JOIN
cláusula retorna linhas da tabela A que possuem a linha correspondente na tabela B.
Esta lógica é aplicada se você unir mais de 2 tabelas.
Veja o exemplo a seguir.
Somente as linhas da tabela A: (a1,1), (a3,3) possuem as linhas correspondentes na tabela B (b1,1), (b2,3) são incluídas no conjunto de resultados.
O diagrama a seguir ilustra a INNER JOIN
cláusula:
INNER JOIN
Exemplos de SQLite
Vamos dar uma olhada nas tabelas tracks
e albums
no banco de dados de exemplo . A tracks
tabela é vinculada à albums
tabela por meio de AlbumId
coluna.
Na tracks
tabela, a AlbumId
coluna é uma chave estrangeira. E na albums
tabela, the AlbumId
é a chave primária .
Para consultar dados de tabelas tracks
e albums
, você usa a seguinte instrução:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para cada linha da tabela de trilhas, o SQLite usa o valor da albumid
coluna da tracks
tabela para comparar com o valor albumid
da albums
tabela. Se o SQLite encontrar uma correspondência, ele combinará os dados das linhas em ambas as tabelas no conjunto de resultados.
Você pode incluir as AlbumId
colunas de ambas as tabelas no conjunto de resultados finais para ver o efeito.
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;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Junção interna SQLite – exemplo de 3 tabelas
Veja as tabelas a seguir: tracks
albums
eartists
Uma faixa pertence a um álbum e um álbum contém muitas faixas. A tracks
tabela associada à albums
tabela por meio de albumid
coluna.
Um álbum pertence a um artista e um artista possui um ou mais álbuns. A albums
tabela é vinculada à artists
tabela por meio de artistid
coluna.
Para consultar dados dessas tabelas, você precisa usar duas cláusulas de junção interna na SELECT
instrução da seguinte maneira:
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;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Você pode usar uma cláusula WHERE para obter as faixas e álbuns do artista com id 10 conforme a seguinte instrução:
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;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu como usar INNER JOIN
a cláusula SQLite para consultar dados de várias tabelas.