Banco de dados Dicas e Tutoriais

Como criar consultas SQL utilizando INNER JOIN, LEFT  JOIN, RIGHT  JOIN, FULL  JOIN e CROSS JOIN

software engineer standing beside server racks
Photo by Christina Morillo on Pexels.com

O post ensina Como criar consultas SQL utilizando INNER JOIN, LEFT  JOIN, RIGHT  JOIN, FULL  JOIN e CROSS JOIN ensina de maneira prática e fácil como criar consultas utilizando o SQL JOIN.

Como criar consultas SQL utilizando INNER JOIN, LEFT  JOIN, RIGHT  JOIN, FULL  JOIN e CROSS JOIN

Na linguagem SQL, executamos diversas consultas para geralmente criar relatórios que serão posteriormente utilizados para análise e a tomada de alguma decisão, e para criarmos consultas cada vez mais completas precisamos utilizar várias tabelas em conjunto e para isso usamos os JOINs.

O que é e para que serve Join em SQL?

Uma cláusula JOIN em SQL, correspondente a uma operação de junção em álgebra relacional, combina colunas de uma ou mais tabelas em um banco de dados relacional. Ela cria um conjunto que pode ser salvo como uma tabela ou usado da forma como está.

Um JOIN é um meio de combinar colunas de uma (auto-junção) ou mais tabelas, usando valores comuns a cada uma delas. O SQL padrão ANSI especifica cinco tipos de JOININNER JOINLEFT JOINRIGHT JOINFULL JOIN e CROSS JOIN.

Como um caso especial, uma tabela (tabela base, visão ou tabela juntada) pode se juntar a si mesma em uma auto-união (self-join).

Em um banco de dados relacional, os dados são distribuídos em várias tabelas lógicas. Para obter um conjunto completo e significativo de dados, é necessário consultar dados dessas tabelas usando junções (JOINs).

Como já foi mencionado acima, existem diferentes tipos de JOINs no SQL. Vamos definir e exemplificar cada um deles.

INNER JOIN

SELECT <select_list>
FROM Tabela A
INNER JOIN Tabela B
ON A.Key = B.Key

A cláusula INNER JOIN compara cada linha da tabela A com as linhas da tabela B para encontrar todos os pares de linhas que satisfazem a condição de junção. Se a condição de junção for avaliado como TRUE, os valores da coluna das linhas correspondentes das tabelas A e B serão combinados em uma nova linha e incluídos no conjunto de resultados.

LEFT JOIN

Retorna todos os registros da tabela esquerda e os registros correspondentes da tabela direita.

SELECT <select_list>
FROM Tabela A
LEFT JOIN Tabela B
ON A.Key = B.Key

Para cada linha da tabela A, a consulta a compara com todas as linhas da tabela B. Se um par de linhas fizer com que a condição de junção seja avaliado como TRUE, os valores da coluna dessas linhas serão combinados para formar uma nova linha que será incluída no conjunto de resultados.

Se uma linha da tabela “esquerda” A não tiver nenhuma linha correspondente da tabela “direita” B, a consulta irá combinar os valores da coluna da linha da tabela “esquerda” A com NULL para cada valor da coluna da tabela da “direita” B que não satisfaça a condição de junto (FALSE).

Em resumo, a cláusula LEFT JOIN retorna todas as linhas da tabela “esquerda” A e as linhas correspondentes ou valores NULL da tabela “esquerda” A.

RIGHT JOIN

Retorna todos os registros da tabela direita e os registros correspondentes da tabela esquerda.

SELECT <select_list>
FROM Tabela A
RIGHT JOIN Tabela B
ON A.Key = B.Key

RIGHT JOIN combina dados de duas ou mais tabelas. A RIGHT JOIN começa a selecionar dados da tabela “direita” B e a corresponder às linhas da tabela “esquerda” A.

RIGHT JOIN retorna um conjunto de resultados que inclui todas as linhas da tabela “direita” B, com ou sem linhas correspondentes na tabela “esquerda” A. Se uma linha na tabela direita B não tiver nenhuma linha correspondente da tabela “esquerda” A, a coluna da tabela “esquerda” A no conjunto de resultados será nula igualmente ao que acontece no LEFT JOIN.

FULL JOIN

Retorna todos os registros quando houver uma correspondência na tabela esquerda ou direita.

SELECT <select_list>
FROM Tabela A
FULL JOIN Tabela B
ON A.Key = B.Key

A cláusula FULL JOIN retorna todas as linhas das tabelas unidas, correspondidas ou não, ou seja, você pode dizer que a FULL JOIN combina as funções da LEFT JOIN e da RIGHT JOINFULL JOIN é um tipo de junção externa, por isso também é chamada junção externa completa.

Quando não existem linhas correspondentes para a linha da tabela esquerda, as colunas da tabela direita serão nulas. Da mesma forma, quando não existem linhas correspondentes para a linha da tabela direita, a coluna da tabela esquerda será nula.

CROSS JOIN

SELECT <select_list>
FROM Tabela A
CROSS JOIN Tabela B

A cláusula CROSS JOIN retorna todas as linhas das tabelas por cruzamento, ou seja, para cada linha da tabela esquerda queremos todos os linhas da tabelas direita ou vice-versa. Ele também é chamado de produto cartesiano entre duas tabelas. Porém, para isso é preciso que ambas tenham o campo em comum, para que a ligação exista entre as duas tabelas.

Para entender melhor, pense que temos um banco de dado, onde temos uma tabela FUNCIONÁRIO e uma tabela CARGO, assim poderíamos ter vários cargos para um único FUNCIONÁRIO, e usando o CROSS JOIN podemos trazer todos os CARGOS de todos os FUNCIONÁRIOS.

Conclusão

Vimos que os JOINs na linguagem SQL são muito importantes, eles nos permite criar consultas mais completas e mais complexas de forma simples, utilizando testes lógicos (condição de junção), e são de extrema importância quando trabalhamos com bancos de dados.

Quer aprender muito mais. Então se inscreva no curso Banco de dados MySql: Aprendizagem Baseada em Projetos.

Fonte: Alura

Super dicas

Se inscreva em nosso canal e compartilhe as matérias que gostar com os seus colegas.

Participe dos nossos grupos de estudos do Facebook e Telegram.

Aproveite também e venha fazer parte do nosso clube de vantagens e ter acesso exclusivo a vídeos, tutoriais, cursos e muito mais.

Clique no link para se tornar um membro do dfilitto – clube de vantagens e ter acesso a todos os benefícios do nosso clube.

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Cursos em destaque

Cursos em promoção

Inscreva-se para receber em seus e-mais as notícias do nosso site

Quer aprender a programar?