Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Cláusula UNION | Subconsultas Aninhadas
SQL Intermediário
course content

Conteúdo do Curso

SQL Intermediário

SQL Intermediário

1. Agrupamento
2. Subconsultas Aninhadas
3. Juntando Tabelas
4. DDL e DML em SQL

bookCláusula UNION

Você dominou com sucesso as consultas internas e já despertamos o interesse de um cliente que deseja que escrevamos consultas SQL para eles.

Mas há uma exigência - teremos que juntar muitas tabelas e trabalhar com elas. Portanto, antes de mergulharmos nos JOINs, vamos nos familiarizar com uma cláusula importante: UNION.

Vamos rapidamente rever os pontos chave ao trabalhar com UNION:

  1. Número e ordem das colunas: Todas as consultas combinadas com UNION devem ter o mesmo número de colunas, e estas colunas devem estar na mesma ordem;
  2. Tipos de dados: Os tipos de dados das colunas correspondentes em cada consulta devem ser compatíveis;
  3. Linhas únicas: Por padrão, UNION remove linhas duplicadas. Para incluir duplicatas, utiliza-se UNION ALL.

Para uma melhor compreensão de como combinar corretamente tabelas utilizando a cláusula UNION, introduzi uma tabela adicional que contém informações sobre contractors.

Não há muitas informações aqui, apenas o first_name, last_name e email.

Eis como esta tabela se parece:

Você pode ver que esta tabela tem semelhanças com a tabela employees. Utilizando a cláusula UNION, podemos combinar estas duas tabelas para, por exemplo, ver uma lista de todos os nomes e sobrenomes dos empregados e contratados envolvidos na empresa.

Para fazer isso, utilizaremos a cláusula UNION:

12345678
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
copy

Vamos descrever brevemente o que está acontecendo aqui:

Temos 2 consultas que retornam 3 colunas com tipos de dados idênticos para cada coluna.

Ou seja, queremos ver o Id, first_name e last_name de todos os participantes da empresa. Também criamos um alias para o Id para que as colunas em ambas as consultas SELECT tenham os mesmos nomes.

Em seguida, usamos a cláusula UNION para combinar o resultado dessas duas consultas SELECT com remoção de duplicatas (embora não tenhamos duplicatas).

Depois disso, usamos a cláusula ORDER BY para ordenar pelo Id.

Nota

Estamos ordenando pelo Id, que é uma coluna comum a ambas as tabelas.

Para melhor compreender, é necessário perceber que após combinar com a cláusula UNION, obtemos "uma grande consulta" com a qual podemos então trabalhar usando diferentes cláusulas; no nosso caso, é a cláusula ORDER BY.

Mas não podemos usar cláusulas como WHERE ou GROUP BY para tabelas combinadas dessa forma usando a cláusula UNION.

Para fazer isso, precisaremos escrever essa combinação em uma subconsulta na seção FROM.

Veja como ficará:

123456789
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
copy

Portanto, usar uma consulta como uma subconsulta na seção FROM abre um leque de possibilidades para nós!

Nota:

A princípio pode parecer assustador, mas acredite, com esse conhecimento e a capacidade de usar tais estruturas, será muito mais fácil escrever consultas complexas e realizar as tarefas que lhe foram atribuídas.

1. Quais colunas são necessárias ao usar a cláusula `UNION` em SQL?
2. Como a cláusula `UNION` trata linhas duplicadas por padrão?
Quais colunas são necessárias ao usar a cláusula `UNION` em SQL?

Quais colunas são necessárias ao usar a cláusula UNION em SQL?

Selecione a resposta correta

Como a cláusula `UNION` trata linhas duplicadas por padrão?

Como a cláusula UNION trata linhas duplicadas por padrão?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5
some-alt