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.
- Junção interna
- Associação à esquerda
- Junção direita
- Junção externa completa
- Auto-junção
- 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 | Nome | Order_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 -
- Os 10 principais comandos do MySQL
- Introdução aos operadores MySQL
- MySQL vs SQLite | Comparação entre os 14 principais
- As 23 principais funções de String do MySQL
- Explicar o comando Insert no MySQL com exemplos
- As 6 principais diferenças entre chave primária e chave estrangeira