DEV Community

Gabriel_Silvestre
Gabriel_Silvestre

Posted on • Edited on

Introdução aos JOINs - SQL

Tabela de Conteúdos


JOIN

O que é?

É um comando do MySQL que permite a seleção de dados em mais de uma tabela, sendo possível manipular esses dados da mesma forma que fazíamos ao buscar em apenas uma tabela.

Tipos

Existem 4 tipos de JOINs que serão abordados logo adiante.

Voltar ao topo


INNER JOIN

O que é?

É um comando que permite a seleção de informações em diferentes tabelas, desde que a informação em questão seja compartilhada por ambas.

Sintaxe

A sintaxe do INNER JOIN é relativamente simples, selecionamos as colunas que desejamos de cada tabela, assim como em um SELECT comum.

Após definirmos as colunas que queremos, invocamos as tabelas da seguinte forma, a primeira deve ser chamada com o comando FROM, e apelidada com o AS para facilitar referências, já a segunda deve ser chamada pelo comando INNER JOIN e apelidada da mesma forma.

E por fim, depois de termos invocado as tabelas que queremos, precisamos dizer de forma explícita qual coluna esta sendo compartilhada por ambas as tabelas, para isso utilizamos o comando ON, seguido de uma comparação de igualdade.

SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t2>.<coluna3>
FROM <tabela1> AS <t1>
INNER JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
Enter fullscreen mode Exit fullscreen mode
SELECT A.first_name, A.actor_id, F.actor_id
FROM sakila.actor AS A
INNER JOIN film_actor AS F
ON A.actor_id = F.actor_id;
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


LEFT JOIN e RIGHT JOIN

O que são?

São comandos de unificação de tabelas assim como o INNER JOIN, porém tanto o LEFT JOIN, quanto o RIGHT JOIN, não trazem só as informações que existem em ambas as tabelas, isso porque esses comandos priorizam uma das tabelas selecionadas e caso falte informação, eles automaticamente completam os valores faltantes com Null.

Sintaxe

A sintaxe segue exatamente a mesma estrutura do INNER JOIN, sendo que a única diferença é que a ordem na qual definimos as tabelas importa.

Ao usarmos o LEFT JOIN estamos priorizando a coluna que definimos a esquerda do JOIN, e ao usar o RIGHT JOIN a coluna a ser priorizada passa a ser a da direita.

SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t3>.<coluna3>
FROM <tabela1> AS <t1>
LEFT JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
Enter fullscreen mode Exit fullscreen mode
SELECT A.actor_id, C.costumer_id, C.first_name,
FROM sakila.actor AS A
LEFT JOIN sakila.customer AS C
ON A.last_name = C.last_name;
Enter fullscreen mode Exit fullscreen mode
SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t3>.<coluna3>
FROM <tabela1> AS <t1>
RIGHT JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
Enter fullscreen mode Exit fullscreen mode
SELECT A.actor_id, C.costumer_id, C.first_name,
FROM sakila.actor AS A
RIGHT JOIN sakila.customer AS C
ON A.last_name = C.last_name;
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


Self Join

O que é?

O SELF JOIN diferente dos outros JOINs que vimos até agora, isso por que ele não é um comando, mas sim um caso onde a tabela realiza um JOIN consigo mesma. Sendo assim, podemos utilizar qualquer tipo de JOIN visto anteriormente para aplicar um SELF JOIN.

Sintaxe

A sintaxe segue exatamente a dos JOINs anteriores, sendo que a única diferença é que iremos pegar dados de apenas um tabela.

SELECT
  CONCAT(Employee.FIRST_NAME, " ", Employee.LAST_NAME) AS "Nome da Pessoa Colaboradora",
  CONCAT(Manager.FIRST_NAME, " ", Manager.LAST_NAME) AS "Nome Gerente"
FROM sakila.employees AS Employee
INNER JOIN sakila.employees AS Manager
ON Employee.MANAGER_ID = Manager.EMPLOYEE_ID;
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


Links Úteis

Voltar ao topo

Top comments (0)