DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Operações com conjuntos no SQL Server

Veja neste artigo informações sobre operações de conjuntos no SQL Server 2008. Mais precisamente, vamos entender na prática os comandos: UNION, INTERSECT e EXCEPT de uma forma simples e direta.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

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.

Veja o modelo da operação de conjuntos como mostra a Listagem 1:

Listagem 1:Modelo de operação de conjuntos

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:

Listagem 2: Código utilizando o UNION ALL

SELECT COD, NOME  FROM CONTABILIDADE
UNION ALL
SELECT COD, NOME FROM FUNCIONARIO.CONTABILIDADE 

Veja o resultado do UNION ALL, como mostra a Figura 1:

Resultado da utilização do UNION ALL

Figura 1: Resultado da utilização do UNION ALL

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:

Listagem 3: Código utilizando o UNION.

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:

Resultado da utilização do UNION (DISTINCT implícito)

Figura 2: Resultado da utilização do UNION (DISTINCT implícito)

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:

Listagem 4: Código utilizando o INTERSECT

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:

Resultado da utilização do INTERSECT

Figura 3: Resultado da utilização do INTERSECT

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:

Listagem 5: Código utilizando o EXCEPT

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:

Resultado da utilização do EXCEPT

Figura 4: Resultado da utilização do EXCEPT

Para obter mais detalhes sobre operações de conjunto no SQL Server 2008, acessem o link: http://msdn.microsoft.com/pt-br/library/ms188055.aspx

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.


Roniere Almeida
Formado em Analise e Dsenvolvimento de Sistemas pela Estacio-FIC, possui certificação Microsoft Technology Associate (MTA) em banco de dados.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03