Voltar para a lista de artigos Artigos
7 minutos de leitura

4 Maneiras Simples de Finalmente Aprender Que Juntar para Usar em uma Consulta SQL

Você provavelmente já sabe que deve usar o JOIN para combinar dados de várias tabelas. Mas que tipo de JOIN? Neste artigo, vou apresentar quatro maneiras simples de finalmente aprender qual JOIN a utilizar em diferentes cenários.

Antes de entrarmos em estratégias inteligentes para aprender Cláusulas JOIN em SQL, sugiro uma breve visão geral dos principais tipos de JUNTOS. Passaremos por vários exemplos para lembrar a diferença entre (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, e FULL (OUTER) JOIN.

Tipos de SQL JOIN: Uma breve visão geral

Para os nossos exemplos de JOIN, estaremos utilizando dados de um centro de parto, um centro de saúde dirigido por parteiras para mães em trabalho de parto. Em particular, temos duas tabelas:

  1. newbornsque tem algumas informações básicas sobre os bebês nascidos durante um determinado período.
  2. midwivesO curso é um curso de formação de parteiras, com os nomes e informações de experiência das parteiras que trabalham em nosso centro de nascimento.

Aqui estão as tabelas:

newborns
idmother_namegenderweightheightmidwife_id
11Marta StewartMale3.452.0104
12Cathrine BlackFemale3.048.5101
13Julia GreyFemale2.848.1104
14Penelope GreenMale3.852.5105
15Gabriela GarciaMale2.948.8105
16Nikita MooreMale4.053.0102
17Lucy MillerFemale2.547.3101

midwives
idfirst_nameyears_experience
101Samantha White6
102Kathleen Webster2
103Sarah McCarty1
105Julia Smith4
106Angela Phillips0

Agora, vamos direto para os exemplos.

JUNÇÃO DE MEMBROS

Começaremos com o tipo JOIN mais comum, que é INNER JOIN (ou simplesmente JOIN). Este tipo de junção é usado para exibir registros correspondentes de ambas as tabelas.

Digamos que queremos obter a identificação do recém-nascido, o nome de sua mãe e também o nome da parteira que estava ajudando durante o parto. Para obter estas informações, podemos nos juntar ao newborns e midwives tabelas baseadas na identificação da parteira, que está disponível em ambas as tabelas:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
JOIN midwives m
ON n.midwife_id = m.id;

Para reduzir a digitação, usamos pseudônimos para nomes de tabelas: n para newborns e m para midwives. Usamos também um apelido de coluna (m.name AS midwife) para obter um nome de coluna significativo na saída.

Aqui está o resultado:

idmother_namemidwife
12Cathrine BlackSamantha White
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith

Conseguimos as informações que queríamos. Entretanto, você pode notar que alguns recém-nascidos (IDs 11 e 13) estão faltando em nossa tabela de resultados. Isso significa que os registros correspondentes (ou seja, IDs de parteira) não foram identificados na segunda tabela (ou seja, midwives).

Se você quiser manter todos os registros da primeira tabela, você deve usar LEFT JOIN.

JOGO ESQUERDO

LEFT JOIN ou LEFT OUTER JOIN é usado para exibir todos os registros da primeira (esquerda) tabela e registros correspondentes da segunda (direita) tabela. Para manter todos os recém-nascidos na saída, podemos usar a mesma consulta como acima, simplesmente substituindo JOIN por LEFT JOIN:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
LEFT JOIN midwives m
ON n.midwife_id = m.id;

E o resultado:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
11Marta StewartNULL
13Julia GreyNULL
17Lucy MillerSamantha White
16Nikita MooreKathleen Webster
15Gabriela GarciaJulia Smith

Agora temos todos os registros da newborns tabela exibida na saída. Ao mesmo tempo, há dois registros com valores NULL na coluna de parteira. Aparentemente, a parteira correspondente (ID 104) não está listada na coluna midwives tabelas. Talvez ela tenha começado recentemente a trabalhar em outro centro de parto.

Ótimo! Mas também é interessante ver se há alguma parteira em nosso centro de nascimento que não tenha auxiliado em trabalhos recentes. Vamos descobrir usando o RIGHT JOIN.

JUNTO À DIREITA

RIGHT JOIN ou RIGHT OUTER JOIN é usado para exibir todos os registros da segunda (direita) tabela e registros correspondentes da primeira (esquerda) tabela. Se quisermos manter todos os registros da midwives, podemos usar exatamente a mesma consulta SQL que antes, apenas substituindo LEFT JOIN por RIGHT JOIN:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
RIGHT JOIN midwives m
ON n.midwife_id = m.id;

Note que RIGHT JOIN é raramente usado porque normalmente pode ser substituído por LEFT JOIN. Em nosso caso, poderíamos usar LEFT JOIN, e mudar a ordem das tabelas, ou seja, colocando midwives na cláusula FROM e newborns no site LEFT JOIN. Os resultados seriam os mesmos que os abaixo:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

Na tabela resultante, você pode ver que há duas parteiras sem registros correspondentes no newborns mesa: Sarah McCarty e Angela Phillips. Parece que estas duas parteiras têm a menor experiência e provavelmente estão ajudando as parteiras mais experientes sem que lhes seja atribuído um papel importante.

Observe também que novamente não vemos todos os recém-nascidos no conjunto de resultados. E se quisermos manter todos os registros de ambas as tabelas? É neste momento que deve ser usado o FULL JOIN.

COMPLETO AJUDA

FULL JOIN ou FULL OUTER JOIN é usado para manter todos os registros de ambas as tabelas. Portanto, se quisermos manter todos os recém-nascidos e todas as parteiras no conjunto de resultados, podemos simplesmente substituir o RIGHT JOIN de nosso último exemplo por um FULL JOIN. Note também que a ordem das tabelas não importa com FULL JOIN; podemos trocar a posição das tabelas e obter o mesmo resultado:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
FULL JOIN midwives m
ON n.midwife_id = m.id;
idmother_namemidwife
11Marta StewartNULL
12Cathrine BlackSamantha White
13Julia GreyNULL
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

Agora temos alguns valores NULL em todas as colunas; estes indicam que alguns dos registros da tabela da esquerda não corresponderam na segunda tabela ou que alguns dos registros da tabela da direita não corresponderam na primeira tabela.

Todos estes princípios de JUNTOS não parecem ser muito desafiadores, não é mesmo? Ainda assim, selecionar o JOIN correto para usar é muitas vezes um desafio para os iniciantes. Então, vamos descobrir as melhores estratégias para dominar Cláusulas JOIN em SQL.

4 Maneiras de aprender Cláusulas JOIN em SQL

Aqui estão quatro passos para finalmente dominar os diferentes tipos de Cláusulas JOIN em SQL.

  1. Aprenda as principais diferenças entre os tipos de JOIN. Seu primeiro passo deve ser aprender sobre os quatro principais tipos de JOIN e as regras básicas de aplicação dos mesmos:
  • JOIN exibe apenas os registros correspondentes de ambas as tabelas.
  • LEFT JOIN exibe todos os registros da tabela da esquerda e os registros de correspondência da tabela da direita.
  • RIGHT JOIN exibe todos os registros da tabela da direita e os registros correspondentes da tabela da esquerda.
  • FULL JOIN exibe todos os registros de ambas as tabelas.
  1. Leia artigos de alta qualidade em Cláusulas JOIN em SQL. Depois de ter aprendido o básico, recomendamos que você leia os detalhes e use os casos para diferentes tipos de JOINs. Sugiro que você comece com estes artigos que discutem todos os principais tipos de JOINs e incluem explicações detalhadas e exemplos:
  1. Use nossa Folha de Dados SQL JOIN Cheat Sheet. Mesmo que você saiba Cláusulas JOIN em SQL bastante bem, muitas vezes é útil ver um breve lembrete com a sintaxe e casos de uso para diferentes tipos de JOIN. Eu recomendo imprimir ou marcar nossa incrível folha de dados SQL JOIN Cheat Sheet. É um guia ilustrado para Cláusulas JOIN em SQL que você pode consultar sempre que não tiver certeza de como usar o JOIN em sua consulta SQL.
  1. Pratique! Finalmente, se você realmente quer dominar Cláusulas JOIN em SQL, você precisa de muita prática. Você pode ler sobre os desafios que você pode encontrar ao praticar Cláusulas JOIN em SQL. Para tornar sua primeira experiência com Cláusulas JOIN em SQL o mais tranqüila possível, sugiro começar com o LearnSQL.com interativo Cláusulas JOIN em SQL curso. Este curso prático inclui 93 desafios de codificação que cobrem todos os tipos importantes de Cláusulas JOIN em SQL. Especificamente, você aprenderá:
  • Quando usar JOIN, LEFT JOIN, RIGHT JOIN, e FULL JOIN.
  • Como unir três ou mais tabelas em uma consulta.
  • Como filtrar dados com diferentes tipos de join.
  • Como unir uma tabela com ela mesma.
  • O que é um join não-equi e quando usá-lo.

Você pode saber mais sobre este curso neste artigo de visão geral.

Obrigado por ler, e feliz aprendizado!