Banco de Dados Descomplicado: Tipos de Junção em SQL.
Introdução
Após uma pausa, vamos retomar hoje os temas de Bancos de Dados, uma das áreas de Tecnologia da Informação (TI) mais cobradas nas carreiras gerais e específicas. Conforme havíamos prometido, elaboramos um artigo exclusivo para falar dos principais tipos de junção em SQL.
Decerto, o tópico é delicado, sendo dúvida frequente entre os concurseiros e até profissionais experientes. A chance de se confundir ou esquecer na hora da prova é grande, principalmente para quem não é desenvolvedor e não trabalha com Banco de Dados no dia a dia.
Se você estuda para as carreiras de TI, a leitura desse artigo é certamente obrigatória. Por outro lado, se você estuda para carreiras concorridas da área geral, com provas de alto nível, recomendamos fortemente que fique conosco também. Assim, veja o que vamos aprender:
- O que é SQL?
- Consultas em SQL
- Junção Interna (Inner Join) em SQL
- Junção Externa (Outer Join) em SQL
- Produto Cartesiano (Cross Join) em SQL
- Resumo Esquematizado dos Tipos de Junção
A fim de facilitar o aprendizado, faremos uma breve explicação sobre assuntos relacionados. Porém, o ideal é que você já tenha visto SQL previamente, incluindo consultas básicas. Se não tiver, leia assim mesmo, pois daremos um jeito.
O assunto é bem extenso, mas fizemos um esforço para compactar tudo em um artigo curtinho, de forma que você não gaste muito tempo na leitura. Chega de papo e vamos começar então!
Tempo de leitura aproximada: 5 a 10 minutos
O que é SQL?
Antes de mais nada, a Structured Query Language (SQL) é uma linguagem de consulta estruturada, utilizada em bancos de dados relacionais. Apesar de ter consulta no nome, ela permite realizar diversas outras operações que envolvam dados, tais como inserções, remoções etc.
Ademais, o padrão SQL é universal para os principais bancos. Embora algumas versões de Sistemas Gerenciadores de Bancos de Dados (SGBDs) possam ter funções adicionais, as provas não costumam explorar muito essas diferenças. Ou seja, a cobrança ainda é focada no tradicional mesmo.
ATENÇÃO: O SQL SERVER (MSSQL) é o SGBD comercializado pela Microsoft. Aliás, muitos profissionais costumam chamá-lo apenas de SQL. Entretanto, isso nada tem a ver com o SQL que vamos apresentar. O MSSQL utiliza a linguagem SQL, assim como outros bancos, mas são conceitos diferentes.
Consultas em SQL
Primeiramente, a linguagem SQL divide os comandos em alguns tipos, tais como Data Manipulation Language (DML), Data Query Language (DQL), Data Definition Language (DDL), Data Control Language (DCL) e Data Transaction Language (DTL).
Não vamos aprofundar cada tipo de comando hoje, pois eles já foram explicados em outro artigo. Dependendo da literatura, os comandos para efetuar consultas denominam-se DQL ou DML. Só para ilustrar, seguem alguns exemplos e sintaxes das consultas em SQL.
Descrição | Sintaxe | Exemplo |
---|---|---|
Consulta a todos os campos da tabela (padrão). Caso a condição seja omitida, todas as linhas da tabela serão consultadas. | SELECT * FROM tabela [WHERE condição] | SELECT * FROM Colaborador WHERE nome = “Cristiane” |
Consulta a alguns campos discriminados da tabela. Caso a condição seja omitida, todas as linhas da tabela serão consultadas. | SELECT campo1, campo2 FROM tabela [WHERE condição] | SELECT nome, cidade FROM Colaborador |
Uma junção em SQL é uma consulta especial que envolve duas ou mais tabelas. Dentre os principais tipos cobrados em prova, podemos destacar a junção interna (inner join), a junção externa (outer join) e o produto cartesiano (cross join). Vamos esquematizar tudo nas próximas seções.
ATENÇÃO: Excepcionalmente, alguns autores consideram que uma tabela pode fazer junção com ela própria. Este tipo de relacionamento denomina-se auto-junção ou auto-união (self-join).
Junção Interna (Inner Join) em SQL
Descrição | Sintaxe | Exemplo |
---|---|---|
– Compara cada linha da tabela A com as linhas da tabela B, verificando se o valor de um determinado campo de uma é igual ao de outra. – Se for, os valores do campo em comum das linhas correspondentes das tabelas A e B serão combinados e incluídos no conjunto de resultados. | SELECT * FROM tabela A INNER JOIN tabela B ON A.campo = B.campo | SELECT A.nome, B.cidade FROM Colaborador A INNER JOIN Cidade B ON A.idCidade = B.idCidade |
Junção Externa (Outer Join) em SQL
Normalmente, a cobrança de junção externa divide-se em três tipos: junção externa à esquerda (left outer join), junção externa à direita (right outer join) e junção externa completa (full outer join).
Junção Externa à Esquerda (Left Outer Join) em SQL
Descrição | Sintaxe | Exemplo |
---|---|---|
– Compara cada linha da tabela A com as linhas da tabela B, verificando se o valor de um determinado campo de uma é igual ao de outra. – Se for, os valores do campo em comum das linhas correspondentes da tabela A serão incluídos no conjunto de resultados. – Caso o valor do campo de A não tenha nenhum valor correspondente em B, o nulo será incluído no conjunto de resultados. | SELECT * FROM tabela A LEFT OUTER JOIN tabela B ON A.campo = B.campo | SELECT A.nome, B.cidade FROM Colaborador A LEFT OUTER JOIN Cidade B ON A.idCidade = B.idCidade |
Junção Externa à Direita (Right Outer Join) em SQL
Descrição | Sintaxe | Exemplo |
---|---|---|
– Compara cada linha da tabela A com as linhas da tabela B, verificando se o valor de um determinado campo de uma é igual ao de outra. – Se for, os valores do campo em comum das linhas correspondentes da tabela B serão incluídos no conjunto de resultados. – Caso o valor do campo de B não tenha nenhum valor correspondente em A, o nulo será incluído no conjunto de resultados. | SELECT * FROM tabela A RIGHT OUTER JOIN tabela B ON A.campo = B.campo | SELECT A.nome, B.cidade FROM Colaborador A RIGHT OUTER JOIN Cidade B ON A.idCidade = B.idCidade |
Junção Externa Completa (Full Outer Join) em SQL
Descrição | Sintaxe | Exemplo |
---|---|---|
– Compara cada linha da tabela A com as linhas da tabela B, verificando se o valor de um determinado campo de uma é igual ao de outra. – Se for, os valores do campo em comum das linhas correspondentes das tabelas A e B serão combinados e incluídos no conjunto de resultados. – Caso o valor do campo de A não tenha nenhum valor correspondente em B, o nulo será incluído no conjunto de resultados. – Caso o valor do campo de B não tenha nenhum valor correspondente em A, o nulo será incluído no conjunto de resultados. – Em síntese, trata-se de um left outer join e right outer join juntos. | SELECT * FROM tabela A FULL OUTER JOIN tabela B ON A.campo = B.campo | SELECT A.nome, B.cidade FROM Colaborador A FULL OUTER JOIN Cidade B ON A.idCidade = B.idCidade |
Produto Cartesiano (Cross Join) em SQL
Descrição | Sintaxe | Exemplo |
---|---|---|
– Cada linha da tabela A é combinada com as linhas da tabela B. – Não há comparação de valores. | SELECT * FROM tabela A CROSS JOIN tabela B | SELECT A.nome, B.cidade FROM Colaborador A CROSS JOIN Cidade B |
Resumo Esquematizado dos Tipos de Junção
Em suma, selecionamos um resumo esquematizado dos tipos de junção em SQL. Sem dúvida, as figuras são emblemáticas e costumam ajudar. Se você gostou, guarde-as em meio físico ou digital, pois elas poderão contribuir com os seus estudos.
Conclusão
Chegamos ao fim do nosso artigo de hoje. Se você ficou conosco até agora, então teve a oportunidade de aprender e/ou revisar tipos de junção em SQL, um dos principais tópicos de Bancos de Dados.
Se quiser aprofundar o conteúdo ou tirar dúvidas específicas, sugerimos que busque o material do Estratégia Concursos. Nós oferecemos diversos cursos em pdf, videoaulas e áudios para você estudar. Saiba mais por meio do link http://www.estrategiaconcursos.com.br/cursos/.
Por fim, recomendamos também que você faça muitas questões para treinar os tópicos apresentados. O acesso ao Sistema de Questões do Estratégia Concursos é feito pelo link: https://concursos.estrategia.com/.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022), TCE-RJ (2022) e CGE-SC (2022/2023). Atualmente exerce o cargo efetivo de Auditora de Controle Externo – Tecnologia da Informação no Tribunal de Contas do Estado do Rio de Janeiro (TCE-RJ), além de ser produtora de conteúdo dos Blogs do Estratégia Concursos, OAB e Carreiras Jurídicas.