Ao manipular dados em bancos de dados, muitas vezes tendemos a usar os operadores de conjunto em SQL, para recuperar dados de acordo com nossos requisitos, combinando duas ou mais instruções SELECT. Neste artigo sobre SQL UNION, discutirei o operador UNION usado para recuperar dados na seguinte sequência:
- O que é o operador SQL UNION?
- Sintaxe:
- Sintaxe UNION
- Sintaxe UNION ALL
- Diferenças entre UNION e UNION ALL
- Exemplos de SQL UNION:
- Exemplo de operador UNION
- Exemplo do operador UNION ALL
- UNION com aliases SQL
- UNION com cláusula WHERE
- UNION ALL com cláusula WHERE
- UNION com JOINS
- UNION ALL com JOINS
Vamos começar!
O que é o operador SQL UNION?
Como o nome sugere, este operador/cláusula é usado para combinar os resultados de duas ou mais instruções SELECT. Aqui, cada instrução SELECT usada na instrução UNION deve ter o mesmo número de colunas na mesma ordem. Além disso, todas as colunas presentes nas instruções SELECT devem ter tipos de dados semelhantes.
A cláusula UNION fornece apenas valores exclusivos como saída. Apenas no caso, você deseja valores duplicados, então você tem que usar a cláusula UNION ALL.
Continuando neste artigo sobre SQL UNION, vamos entender a sintaxe.
Sintaxe SQL UNION
Sintaxe UNION
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Sintaxe UNION ALL
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION ALL SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Continuando neste artigo, vamos entender as diferenças entre UNION e UNION ALL.
Diferenças entre SQL UNION e UNION ALL
UNION | UNIÃO TODOS |
Combina dois ou mais conjuntos de resultados e não mantém os valores duplicados. | Combina dois ou mais conjuntos de resultados e mantém os valores duplicados. |
Syntax: UNION | Syntax: UNION ALL |
A seguir, neste artigo sobre SQL UNION, vamos entender as diferentes maneiras de usar esse operador.
Exemplos de SQL UNION e UNION ALL
Para sua melhor compreensão, considerarei as tabelas a seguir para mostrar diferentes exemplos.
Tabela de funcionários
EmpID | Nome | EmpAge | Cidade | Código postal | País |
1 | Emma | 23 | Berlim | 12109 | Alemanha |
2 | Raul | 26 | Mumbai | 400015 | Índia |
3 | Ayra | 24 | Nova York | 10014 | EUA |
4 | João | 32 | Londres | E1 7AE | Reino Unido |
5 | Derek | 29 | Nova York | 10012 | EUA |
Tabela de Projetos
ProjectID | Nome | Dias úteis | Cidade | Código postal | País |
1 | Projeto 1 | 10 | Berlim | 12109 | Alemanha |
2 | Projeto 2 | 7 | Mumbai | 400015 | Índia |
3 | Projeto 3 | 20 | Delhi | 110006 | Índia |
4 | Projeto 4 | 15 | Mumbai | 400015 | Índia |
5 | Projeto 5 | 28 | Berlim | 12109 | Alemanha |
Vamos começar com exemplos.
Exemplos de SQL UNION
Exemplo de operador UNION
Escreva uma consulta para recuperar cidades distintas da tabela Funcionários e Projetos.
SELECT City FROM Employees UNION SELECT City FROM Projects ORDER BY City;
Saída:
Cidade |
Berlim |
Delhi |
Londres |
Mumbai |
Nova York |
Exemplo de operador UNION ALL
Escreva uma consulta para recuperar cidades da tabela Funcionários e Projetos. Aqui, valores duplicados devem ser incluídos.
SELECT City FROM Employees UNION ALL SELECT City FROM Projects ORDER BY City;
Saída:
Cidade |
Berlim |
Berlim |
Berlim |
Delhi |
Londres |
Mumbai |
Mumbai |
Mumbai |
Nova York |
Nova York |
A seguir, neste artigo, vamos entender como usar a cláusula UNION com SQL Aliases.
UNION com aliases SQL
Os Aliases SQL são usados para dar um nome temporário a uma tabela ou coluna. Então, vamos escrever uma consulta para listar todos os funcionários e projetos exclusivos.
SELECT 'Employee' AS Type, Name, City, Country FROM Employees UNION SELECT 'Project', Name, City, Country FROM Projects;
Saída:
Tipo | Nome | Cidade | País |
Funcionário | Emma | Berlim | Alemanha |
Funcionário | Raul | Mumbai | Índia |
Funcionário | Ayra | Nova York | EUA |
Funcionário | João | Londres | Reino Unido |
Funcionário | Derek | Nova York | EUA |
Projeto | Projeto 1 | Berlim | Alemanha |
Projeto | Projeto 2 | Mumbai | Índia |
Projeto | Projeto 3 | Delhi | Índia |
Projeto | Projeto 4 | Mumbai | Índia |
Projeto | Projeto 5 | Berlim | Alemanha |
UNION com cláusula WHERE
Escreva uma consulta para recuperar as cidades indianas distintas e seus códigos postais da tabela Funcionários e Projetos.
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Saída:
Cidade | Código postal | País |
Delhi | 110006 | Índia |
Mumbai | 400015 | Índia |
UNION ALL com cláusula WHERE
Escreva uma consulta para recuperar cidades indianas e seus códigos postais da tabela Funcionários e Projetos, onde valores duplicados são permitidos
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION ALL SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Saída:
Cidade | Código postal | País |
Delhi | 110006 | Índia |
Mumbai | 400015 | Índia |
Mumbai | 400015 | Índia |
Mumbai | 400015 | Índia |
Avançando neste artigo, vamos entender como usar as cláusulas UNION e UNION ALL com JOINS. JOINS em SQL são comandos que são usados para combinar linhas de duas ou mais tabelas, com base em uma coluna relacionada entre essas tabelas.
UNION com JOINS
O operador SQL UNION pode ser usado com SQL JOINS para recuperar dados de duas tabelas diferentes. Vou considerar a tabela a seguir junto com a tabela Funcionários para o exemplo.
Tabela de detalhes do projeto
PID | Dias úteis | EmpID | Custo por projeto |
11 | 12 | 4 | 20000 |
22 | 16 | 3 | 35000 |
33 | 30 | 1 | 60000 |
44 | 25 | 3 | 45000 |
55 | 21 | 1 | 50000 |
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Saída:
EmpID | Nome | Custo por projeto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Raul | NULO |
3 | Ayra | 35000 |
3 | Ayra | 45000 |
4 | João | 20000 |
5 | Derek | NULO |
UNION ALL with JOINS
Escreva uma consulta para recuperar EmpID, Name e CostforProject da tabela Employees e ProjectDetails, onde valores duplicados são permitidos.
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION ALL SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Saída:
EmpID | Nome | Custo por projeto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Raul | NULO |
3 | Ayra | 35000 |
3 | Ayra | 45000 |
4 | João | 20000 |
5 | Derek | NULO |
4 | João | 20000 |
3 | Ayra | 35000 |
1 | Emma | 60000 |
3 | Ayra | 35000 |
1 | Emma | 50000 |
Com isso, chego ao final deste artigo sobre SQL UNION. Espero que você tenha gostado de ler este artigo sobre SQL UNION. Vimos as diferentes maneiras de usar os comandos UNION e UNION ALL para ajudá-lo a escrever consultas. Se você deseja aprender mais sobre MySQL e conhecer este banco de dados relacional de código aberto, confira nosso MySQL DBA Treinamento de certificação que vem com treinamento ao vivo conduzido por instrutor e experiência de projeto na vida real. Este treinamento ajudará você a entender o MySQL em profundidade e a dominar o assunto.
Tem alguma pergunta para nós? Por favor, mencione-o na seção de comentários de ”SQL UNION” e eu entrarei em contato com você.