Database
 sql >> Base de Dados >  >> RDS >> Database

SQL Union – Um guia completo sobre o operador UNION

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:
    1. Sintaxe UNION
    2. Sintaxe UNION ALL
  • Diferenças entre UNION e UNION ALL
  • Exemplos de SQL UNION:
    1. Exemplo de operador UNION
    2. Exemplo do operador UNION ALL
    3. UNION com aliases SQL
    4. UNION com cláusula WHERE
    5. UNION ALL com cláusula WHERE
    6. UNION com JOINS
    7. 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ê.