Operações de conjuntos são operações entre dois ou mais conjuntos de entrada (SELECT), ou seja, uma seleção para juntar ou comparar esses conjuntos (tabelas ou campos).
A T-SQL dá suporte aos três conjuntos: UNION (união), INTERSECT (interseção) e EXCEPT (exceção), os dois últimos foram introduzidos a partir do SQL Server 2005.
Guia do artigo:
Veja o modelo da operação de conjuntos como mostra a Listagem 1:
SELEÇÃO1 (SELECT)
<OPERAÇÃO_DE_CONJUNTO>
SELEÇÃO2 (SELECT)
[ORDER BY...]
Operações de conjuntos UNION
Vamos pensar de acordo com a teoria dos conjuntos, aquele que estudamos na escola. Vamos imaginar os conjuntos A e B, o que a operação UNION faz? Vomo o próprio nome diz, a união desses dois conjuntos, no nosso caso, a união das informações entre duas tabelas. Na T-SQL há suporte a dois tipos de união: UNION ALL e UNION, este ultimo com DISTINCT implícito.
Vamos dar inicio a parte prática do nosso artigo, vou utilizar um banco chamado EXEMPLO_SCHEMA e fazer o seguinte SELECT (UNION ALL), como mostra a Listagem 2:
SELECT COD, NOME FROM CONTABILIDADE
UNION ALL
SELECT COD, NOME FROM FUNCIONARIO.CONTABILIDADE
Veja o resultado do UNION ALL, como mostra a Figura 1:
O UNION ALL retorna todas as linhas sem comparar e sem eliminar duplicatas, ou seja, simplesmente puxa todas as informações do SELECT.
Agora vamos mostrar como exemplo o mesmo SELECT sem o ALL, e vamos verificar o resultado. Primeiramente, vejamos o código a ser utilizado, como mostra a Listagem 3:
SELECT COD, NOME FROM CONTABILIDADE
UNION
SELECT COD, NOME FROM FUNCIONARIO.CONTABILIDADE
Apenas o UNION (com o DISTINCT implícito). Neste caso as linhas duplicatas são eliminadas, conforme ilustra a Figura 2:
Operação de conjuntos INTERSECT
A operação INTERSECT funciona de forma um pouco parecida com a UNION, a diferença é que logicamente ela elimina primeiro as linhas duplicadas nos dois selects. Para ser mais claro vamos ao exemplo, como mostra a listagem 4:
SELECT COD, NOME FROM CONTABILIDADE
INTERSECT
SELECT COD, NOME FROM FUNCIONARIO.CONTABILIDADE
Para ficar mais claro, vamos mostrar o resultado, como mostra a Figura 3:
Operação de conjuntos EXCEPT
A operação de conjuntos EXCEPT, funciona como se fosse a diferença entre os conjuntos A e B (A - B), ou seja, os elementos que pertencem a A e não a B. Veja o exemplo, cujo código é mostrado na Listagem 5:
SELECT COD, NOME FROM CONTABILIDADE
EXCEPT
SELECT COD, NOME FROM FUNCIONARIO.CONTABILIDADE
Para se ter uma ideia, vamos ver o resultado desta operação de conjunto, ilustrado na Figura 4:
Para obter mais detalhes sobre operações de conjunto no SQL Server 2008 acessem a documentação.
Com isso finalizo este artigo que teve a real intenção de mostrar, sem muitos detalhes, as operações de conjuntos no SQL Server 2008. Espero que tenham gostado e até o próximo artigo.