Introdução às junções no MySQL

O MySQL Joins desempenha um papel importante quando precisamos unir duas tabelas com base em um ou mais valores comuns compartilhados por duas tabelas.

Exemplo : Vamos considerar que temos duas tabelas, uma é a tabela de funcionários que consiste em employee_id, phn_no, salário e departamento. Outra tabela é a tabela de endereços que consiste em employee_id e address. Se precisarmos descobrir employee_id, departamento e endereço, precisamos unir as tabelas que compartilham o campo comum como employee_id.

Consulta :

SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;

Os 6 principais tipos de junções no MySQL

Existem diferentes tipos de junções no MySQL. As junções mencionadas abaixo são encontradas no uso diário e são mais úteis ao realizar muitas consultas em cenários reais.

  1. Junção interna
  2. Associação à esquerda
  3. Junção direita
  4. Junção externa completa
  5. Auto-junção
  6. Junção cruzada

1. Junção Interna

A junção interna retorna o valor correspondente nas duas tabelas.

Esta parte é fornecida como mostrado na figura acima.

Exemplo 1:

Emp_id Departamento Salário
1001 ISTO 1000
1002 CSR 800
1003 ISTO 2000

Esta é a tabela de funcionários.

Emp_id Endereço
1002 Délhi
1003 Bangalore
1005 Bbsr

Aqui está a tabela de endereços desses funcionários. A chave primária do funcionário da tabela pai emp_id é usada como chave estrangeira na tabela de endereços que é a tabela filha. Encontraremos o emp_id, departamento e endereço de um funcionário usando a junção interna. Porque os estados de junção internos Buscam os registros presentes / comuns nas duas tabelas.

Inquerir:

SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;

Damos um alias ao nome da tabela apenas para evitar mais demorado. Na consulta acima, usamos o alias 'emp' para a tabela de funcionários e 'ads' para a tabela de endereços.

Resultado:

Emp_id Departamento Endereço
1002 CSR Délhi
1003 ISTO Bangalore

Como no exemplo acima, emp_id 1002 e 1003 eram comuns entre as duas tabelas, o comando de junção interna busca a saída apenas para esses funcionários.

Exemplo 2:

Aqui temos 2 tabelas, tabela1 e tabela2. Ambas as tabelas consistem em um atributo, cada um como coluna A e coluna B, respectivamente.

Tabela 1

Coluna A
1 1
1 1
2
3
4

Mesa 2

Coluna B
1 1
2
2
3
3
5

Inquerir:

If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;

Resultado:

Coluna A Coluna B
1 1 1
1 1 Nulo
2 2
Nulo 2
3 3
Nulo 3

2. Junção Esquerda

Essa junção retorna todos os registros da tabela esquerda e os registros correspondentes da tabela direita.

Como mostra o diagrama acima, ele consiste em todos os registros da tabela A e os comuns de A e B.

Exemplo 1:

Identificação do Cliente Nome Cidade
1 1 Harish Cuttack
2 David Bangalore
3 Mahesh Bhubaneswar
4 Sam Kolkata

Tabela do cliente:

Order_id Montante Identificação do Cliente
19868 7575, 00 4
19976 434654.00 2
99680 7457, 00 3

Tabela de pedidos:

Descobriremos customer_id, nome e order_id associados usando a associação à esquerda.

Inquerir:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;

Resultado:

Identificação do Cliente NomeOrder_id
1 1 Harish nulo
2 David 19976
3 Mahesh 99680
4 Sam 19868

Conforme discutimos, essa junção esquerda buscava todo o ID do cliente da tabela de clientes e os comuns entre as duas tabelas. Para o customer_id '1', ele será exibido como 'nulo' porque o '1' customer_id não está presente na tabela de pedidos.

Exemplo 2:

Aqui temos 2 tabelas, tabela1 e tabela2. Ambas as tabelas consistem em um atributo, cada um como coluna A e coluna B, respectivamente.

Tabela 1

Coluna A
1 1
1 1
2
2
3

Mesa 2

Coluna B
1 1
2
2
4
4
5
5

Inquerir:

If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;

Coluna A Coluna B
1 1 1
1 1 Nulo
2 2
2 2
3 Nulo

3. Junção certa

Essa junção retorna todos os registros da tabela direita e os correspondentes da tabela esquerda.

O diagrama acima mostra que busca todos os registros da tabela B e o comum que está presente nas duas tabelas.

Exemplo:

Identificação do Cliente Nome Cidade
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 RAM Mumbai

Tabela do cliente:

Order_id Montante Identificação do Cliente
19868 7575, 00 4
19976 434654.00 2
99680 7457, 00 3

Tabela de pedidos:

Descobriremos customer_id, nome e order_id associados a ele usando a associação correta.

Inquerir:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;

Resultado:

Identificação do Cliente Nome Order_id
2 nulo 19976
3 Mahesh 99680
4 Sam 19868

Conforme realizamos a junção correta aqui, a consulta buscou todo o ID do cliente da tabela de pedidos e os registros comuns que estão nas duas tabelas.

4. Junção externa completa

A junção externa completa retorna todos os registros das duas tabelas se houver um campo comum compartilhado.

Exemplo:

Identificação do Cliente Nome Cidade
3 Mahesh Bhubaneswar
4 Sam Kolkata
5 RAM Mumbai

Tabela do cliente:

Order_id Montante Identificação do Cliente
19868 7575, 00 4
19976 434654.00 2
99680 7457, 00 3

Tabela de pedidos:

Descobriremos customer_id, nome e order_id associados a ele usando uma junção externa completa.

Inquerir:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;

Resultado:

Identificação do Cliente Nome Order_id
2 nulo 19976
3 Mahesh 99680
4 Sam 19868
5 RAM nulo

Essa junção externa completa buscou todo o ID do cliente da tabela de clientes e da tabela de pedidos.

5. Auto-ingresso

A junção automática é uma junção regular e aqui a tabela se une apenas a ela mesma.

Emp_id Nome Telefone não Cidade País
1001 R. Madhvan 9687687698 Bangalore Índia
1002 Gobu Sharma 9856453423 Pune Índia
1003 Debasish Das 8765456787 Mumbai Índia
1004 Amit Rout 4567788635 Pune Índia
1005 Sambit Kar 8789887873 Hyderabad Índia

Aqui está a tabela de funcionários que consiste em vários campos. Vamos descobrir os funcionários que moram na mesma cidade.

Consulta :

SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;

Saída :

Employee_name1 Employee_name2 e1.city
Gobu Sharma Amit Rout Pune
Amit Rout Gobu Sharma Pune

6. Junção Cruzada

Essa junção produz um resultado em que o número de linhas na primeira tabela é multiplicado pelas linhas da segunda tabela. Esse tipo de resultado é chamado de produto cartesiano. Se usarmos a cláusula WHERE com essa junção, isso funcionará como uma junção interna.

Exemplo:

Prod_id Nome do Produto Unidade de produção ID da empresa
1 1 Chex mix Pcs 12
2 Cheez-it Pcs 15
3 Bolacha pcs 16

Tabela de produtos :

ID da empresa Nome da empresa Company_city
15 Gastronômico Délhi
16 Jack n Jill Cuttack
17 Natural Bangalore

Tabela da empresa :

Aplicaremos uma junção cruzada a essas tabelas.

Consulta :

SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;

Saída :

p.product_name p.prod_unit c.company_name
Chex mix Pcs Gastronômico
Cheez-it Pcs Gastronômico
Bolacha Pcs Gastronômico
Chex mix Pcs Jack n Jill
Cheez-it Pcs Jack n Jill
Bolacha Pcs Jack n Jill
Chex mix Pcs Natural
Cheez-it Pcs Natural
Bolacha Pcs Natural

Conclusão

O significado dessas uniões é muito importante ao trabalhar em cenários em tempo real e também em algumas outras tecnologias. Em visualizações como o Tableau e o Power BI, as junções desempenham um papel vital. A prática estruturada disso é essencial para incorporar essas novas técnicas e habilidades.

Artigo recomendado

Este é um guia para as associações no MySQL. Aqui discutimos os 6 principais tipos de junções no MySQL, como Interno, Esquerdo, Direito, Completo, Próprio, Cruz e seus Exemplos, juntamente com Consulta e Saída. você também pode consultar nossos artigos sugeridos para saber mais -

  1. Os 10 principais comandos do MySQL
  2. Introdução aos operadores MySQL
  3. MySQL vs SQLite | Comparação entre os 14 principais
  4. As 23 principais funções de String do MySQL
  5. Explicar o comando Insert no MySQL com exemplos
  6. As 6 principais diferenças entre chave primária e chave estrangeira