Lesson of 31
Diferentes partes de informação podem ser armazenadas em diferentes tabelas, e para juntá-las, usamos INNER JOIN ... ON
. Juntar tabelas é o núcleo da funcionalidade SQL, mas pode ficar muito complicado. Vamos começar com um exemplo simples, e começaremos com um INNER JOIN
.
Como você pode ver abaixo, há 3 tabelas:
character: Cada personagem é uma linha e é representado por um identificador único (id), ex. 1 é Doogie Howser
character_tv_show: Para cada personagem, em qual programa ele/ela está?
character_actor: Para cada personagem, quem é o ator?
Veja que em character_tv_show, ao invés de armazenar tanto o personagem quanto os nomes do programa de TV (ex. Willow Rosenberg e Buffy the Vampire Slayer), ele armazena o character_id como substituto para o nome do personagem. Este character_id refere-se à linha id correspondente da tabela character.
Isso é feito para que os dados não sejam duplicados. Por exemplo, se o nome de um personagem fosse mudar, você só teria que mudar o nome do personagem em uma linha.
Isso nos permite “juntar” as tabelas “em” essa coluna de referência/comum.
Para obter o nome de cada personagem com o nome do seu programa de TV, podemos escrever SELECT character.name, character_tv_show.tv_show_name
FROM character
INNER JOIN character_tv_show
ON character.id = character_tv_show.character_id;
Isso junta cada linha em character com a linha correspondente em character_tv_show, ou vice-versa.
Nota:
- Usamos a sintaxe nome_da_tabela.nome_da_coluna. Se usássemos apenas nome_da_coluna, SQL poderia assumir incorretamente de qual tabela está vindo.
- A consulta de exemplo acima está escrita em múltiplas linhas para legibilidade, mas isso não afeta a consulta.
Você pode usar um inner join para emparelhar o nome de cada personagem com o ator que os interpreta? Selecione as colunas: character.name, character_actor.actor_name