Voltar para a lista de artigos Artigos
9 minutos de leitura

Como praticar o SQL JOINs

Não há melhor maneira de aprender SQL JOINs do que através da prática. No entanto, provavelmente haverá obstáculos ao longo do caminho. Vou cobrir alguns desses obstáculos e dar idéias de como superá-los. Embora este artigo não o transformará em um especialista em Cláusulas JOIN em SQL, ele lhe mostrará como se tornar um. Então, vamos começar!

Desafios ao Praticar Cláusulas JOIN em SQL

É difícil responder "Como você domina Cláusulas JOIN em SQL?". Entretanto, é fácil responder "Como você pratica Cláusulas JOIN em SQL?” Este é o caminho para dominar Cláusulas JOIN em SQL.

Se você está lendo este artigo, provavelmente já começou a aprender sobre bancos de dados e a entender o que eles são. Além disso, você provavelmente já entendeu alguns conceitos básicos como tabelas, chaves primárias e estrangeiras, escrever simples declarações SELECT, etc.

Portanto, você está pronto para começar a escrever consultas mais complexas, mas provavelmente enfrentará certos desafios. Os desafios que eu abordei neste artigo são aqueles que eu experimentei ao aprender algo novo. Portanto, vamos enumerar os desafios mais comuns.

Usando os dados corretos

Não é notícia de última hora dizer que as bases de dados estão focadas em dados. Ele começa com dados do mundo real que são armazenados digitalmente em um banco de dados. Então, essas informações precisam ser recuperadas do banco de dados e transformadas em relatórios do mundo real. Não consigo imaginar criar relatórios significativos a partir de bancos de dados sem usar o JOINs.

Talvez você trabalhe em uma instituição financeira, talvez você analise resultados eleitorais, ou talvez você se pergunte como os usuários de seu jogo móvel estão realmente usando-o. Talvez você também esteja se preparando para uma entrevista. Não importa o quê, você precisará saber como lidar com milhares ou milhões de registros em muitas tabelas diferentes.

Seu objetivo será escrever perguntas que retornem exatamente o que você deseja. Para fazer isso, você precisará saber como escrever o código SQL e pelo menos ter uma idéia de qual deve ser o resultado final.

Enquanto pratica Cláusulas JOIN em SQL, um desafio pode ser encontrar um conjunto de dados apropriado. As empresas provavelmente não irão compartilhar seus dados para você praticar, mas praticar com conjuntos de dados inadequados não é uma boa opção. Se a consulta não retornar nada, você não pode ter certeza se escreveu a consulta incorretamente ou se o conjunto de dados não tem nada que se ajuste aos critérios.

O conjunto de dados ideal lhe permitirá obter resultados para as consultas mais comuns e também para alguns casos especiais interessantes. Tecnicamente, você mesmo poderia criar um conjunto de dados, mas há alguns desafios significativos:

  1. Você precisará saber como criá-lo - cuidar dos dados, chaves, inserções, etc.
  2. Você precisará saber quais casos você quer cobrir com os dados. Isto é difícil porque você está praticando para aprender isto e não o contrário.
  3. O conjunto de dados precisará ser suficientemente grande - não pode ser apenas algumas fileiras em cada tabela. Leva tempo para reunir informações do mundo real (por exemplo, listas de cidades e países) ou produzir seus próprios dados (funcionários imaginários, funções, etc.).

Encontrando os exemplos certos

Você precisa não apenas de um bom conjunto de dados, mas também de exemplos que o ajudem a aprender de forma eficiente e eficaz. Você pode encontrar facilmente milhares de exemplos na Internet, mas alguns podem ser muito simples enquanto outros podem estar além do que você pode entender naquele momento. É melhor ir passo a passo de exemplos simples para exemplos complexos.

Estes exemplos também devem ser facilmente compreensíveis e próximos a problemas e implementações que você encontrará em seu(s) trabalho(s). As tabelas devem ser utilizadas em quase todos os bancos de dados (por exemplo, usuários, clientes, estudantes, carros, etc.). Isto tornará os exemplos mais compreensíveis e aplicáveis a situações do mundo real.

Teoria do Equilíbrio e Aplicação

A maioria das pessoas que aprendem a escrever Cláusulas JOIN em SQL não estão muito interessadas na teoria por trás deles. Embora seja sempre bom entender a teoria, a situação nem sempre nos permite gastar tanto tempo com ela. Isto se aplica a quase tudo na vida, e a chave é encontrar um equilíbrio.

Você deve aprender apenas teoria suficiente para entender o que está fazendo quando está escrevendo perguntas. Isto não significa que você não deve aprender tanto quanto possível, mas deve aprender em etapas. Você deve saber o que é exigido de você, o que se une para usar, e por quê.

Pratique Cláusulas JOIN em SQL Online

Não importa o que você esteja aprendendo, você deve começar com o básico e melhorar seus conhecimentos com o tempo - não muito rápido, não muito lento. Então, qual é a melhor maneira de aprender Cláusulas JOIN em SQL?

Eu pessoalmente amo a história. É uma das minhas paixões (além de bancos de dados, é claro). Meu parceiro costuma dizer que eu sou uma "fonte" de fatos bizarros da história. E eu concordo com isso. A maioria desses fatos bizarros eu encontro através de vídeos. Há ótimos vídeos disponíveis na Internet. Gostaria de ter isto quando fui para a escola.

Mas há um problema com esta abordagem ao aprender Cláusulas JOIN em SQL e a maioria das outras matérias relacionadas a TI. Você não pode simplesmente assistir a um vídeo de outra pessoa codificando e esperar ter esse conhecimento. Enquanto você definitivamente aprenderá algo, nada é melhor do que escrever código você mesmo.

Quando você assiste a vídeos, você toma as coisas como certas, e não aprende fazendo. Quando você começa a escrever o código, você percebe que está realmente aprendendo a usar Cláusulas JOIN em SQL. Não estou dizendo que os cursos em vídeo não são uma grande parte do processo de aprendizagem. Eu apenas acredito que você não pode dominar o SQL JOINs apenas assistindo a vídeos.

Portanto, eu sugiro fortemente que você aprenda Cláusulas JOIN em SQL escrevendo código. Uma maneira de fazer isso é praticar on-line.

Vou compartilhar uma de minhas experiências pessoais. Sempre fiquei entusiasmado em instalar um novo ambiente de desenvolvimento. Após cada instalação, eu iniciaria o programa e, é claro, veria uma tela em branco. Isso é esperado. Então, o próximo passo normalmente era procurar exemplos online no Google, mas isto não era o ideal.

Embora você possa ser um fã de livros, vídeos ou até mesmo do Google, acho que não há melhor maneira de descobrir as coisas do que entrar em um curso sobre o que você está tendo um problema. Você terá exemplos que estão devidamente preparados e descritos. Além disso, estes exemplos serão ordenados de forma que você possa progredir lentamente para problemas mais complicados.

Tipos e exemplos deSQL JOIN

SQL suporta diferentes tipos de JOINs, a fim de retornar o resultado desejado. Aqui estão os JOINs mais conhecidos.

JOGOS INNER

INNER JOIN é usado para unir duas tabelas com base em uma condição. As tabelas são unidas usando uma condição escrita depois de ON. Atributos-chave primários e estrangeiros são normalmente usados aqui, mas variações são possíveis. Somente as linhas das tabelas incluídas no INNER JOIN com um par, definido por condição, serão devolvidas.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id;

JOGO ESQUERDA

LEFT JOIN faz a mesma coisa que INNER JOIN exceto que são necessárias duas tabelas, a tabela "esquerda" e a tabela "direita". A condição é escrita após ON. Ela retorna todas as linhas da tabela "esquerda", mesmo aquelas que não têm um par na tabela "direita".

SELECT *
FROM student
LEFT JOIN room ON student.room_id = room.id;

UNIÃO DIREITA

RIGHT JOIN faz a mesma coisa que a LEFT JOIN exceto que pega todas as linhas da tabela "direita" e as une à tabela "esquerda". Como LEFT JOIN e RIGHT JOIN são similares, e você pode simular RIGHT JOIN com LEFT JOIN (basta trocar a ordem das mesas no join), RIGHT JOIN é raramente utilizado. Outra razão para isto é que lemos de cima para baixo e da esquerda para a direita. Portanto, a legibilidade da consulta usando LEFT JOIN é mais intuitiva.

SELECT *
FROM student
RIGHT JOIN room ON student.room_id = room.id;

Múltiplas uniões

Múltiplos JOINs permitem que você se junte a mais de duas mesas. Juntar mais de duas mesas é bastante comum. Você usará as mesmas JUNTAS que mencionamos até agora, assim como algumas regras aplicadas a elas. Tome cuidado para que cada JOIN tenha suas próprias condições escritas após ON. A fim de aumentar a legibilidade e simplificar as coisas, coloque cada JOIN em uma nova linha.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id
INNER JOIN equipment ON equipment.room_id = room.id;

JUNTAR COMPLETAMENTE

FULL JOIN retorna todas as linhas da tabela "esquerda" e "direita", mesmo que elas tenham um par. Alguns SGBD suportam FULL JOIN, enquanto alguns não o fazem. Você pode facilmente simular FULL JOIN usando a combinação de LEFT JOIN e RIGHT JOIN, como mostrado abaixo.

SELECT movie.*, director.*
FROM movie
LEFT JOIN director ON movie.director_id = director.id
UNION
SELECT movie.*, director.*
FROM movie
RIGHT JOIN director ON movie.director_id = director.id;

Auto-ajuda

Os Self JOINs não são um tipo de JOIN, mas uma forma de usar uma mesa mais de uma vez em um JOIN. Isto significa que você se juntará à mesa consigo mesmo. Portanto, se você tiver duas mesas, uma mesa estará à esquerda e a direita da JOIN. Aqui estão alguns exemplos de quando você precisaria fazer isso: "liste todos os empregados e todos os outros empregados mais velhos que este empregado" e "descubra se há algum diretor com salário mais baixo que qualquer um dos empregados". Para simplificar, você precisa de dados da mesma tabela duas vezes, e precisa juntar/comparar esses dois conjuntos de dados com base em uma condição.

Juntas não-Equi

Até agora, usamos apenas equações em JOIN condições (após a palavra-chave ON). No entanto, isso não é necessário. Você pode fazer o que quiser em uma condição, mas esteja ciente de que isso terá impacto no resultado (e, é claro, tenha certeza de saber o que você está fazendo).

SELECT *
FROM student s1
INNER JOIN student s2 on s1.id < s2.id
ORDER BY s1.id, s2.id;

Note que a consulta acima é um exemplo de um self JOIN (usamos o student tabela duas vezes), bem como um non-equi JOIN (usando "<" em vez de "=" na condição s1.id < s2.id). A própria consulta retorna todos os estudantes combinados com outros estudantes (mas eles). Cada combinação é devolvida exatamente uma vez.

Você quer saber mais sobre Cláusulas JOIN em SQL? Assista a um episódio de nossa série We Learn SQL no Youtube. Verifique se você já sabe tudo sobre os diferentes tipos de JOINs.

Conclusão

Não há resposta fácil para a pergunta "Como você domina Cláusulas JOIN em SQL?". A única maneira de fazê-lo é tentando, fracassando e finalmente conseguindo. Levará menos ou mais tempo com base em seus conhecimentos atuais e na forma como você pratica. Isso nos leva novamente à pergunta "Como você pratica Cláusulas JOIN em SQL?” No final, esta é a pergunta que precisamos responder.

Qualquer que seja o caminho escolhido, certifique-se de obter o máximo do investimento de seu tempo e dinheiro. Enquanto o dinheiro puder ser ganho, ninguém lhe devolverá seu tempo. Minha sugestão é praticar com exemplos, o máximo possível.

Se você gostaria de assistir alguns vídeos como parte de seu processo de aprendizagem, recomendo este aqui. Acho que você vai gostar, especialmente se você for fã de Cláusulas JOIN em SQL e de ficção científica.