OPERACIONES DE CONJUNTO(S)

SQL proporciona varias operaciones de conjuntos muy eficaces. Por ejemplo, incluye operadores de conjuntos del estilo de los de SQL como UNION, INTERSECT, EXCEPT y EXISTS. Entity SQL también es compatible con operadores para la eliminación de duplicados (SET), la prueba de pertenencia a un grupo (IN) y las combinaciones (JOIN). En los temas siguientes se describen los operadores de conjuntos de SQL.

·   UNION, disponible en todas las versiones de SQL Server.
·  EXCEPT, nuevo en SQL Server 2005.
·   INTERSECT, nuevo en SQL Server 2005.

Para utilizar operaciones de conjuntos debemos cumplir una serie de normas.
·Las consultas a unir deben tener el mismo número campos, y además los campos deben ser del mismo tipo.
·Sólo puede haber una única clausula ORDER BY al final de la sentencia SELECT.


   UNIÓN
Devuelve la suma de dos o más conjuntos de resultados. El conjunto obtenido como resultado de UNION tiene la misma estructura que los conjuntos originales.
El siguiente ejemplo muestra el uso de UNION



SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM EMPLEADOS
UNION
SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM CLIENTES

Cuando realizamos una consulta con UNION internamente se realiza una operacion DISTINCTsobre el conjunto de resultados final. Si queremos obtener todos los valores debemos utiliza UNION ALL.


  EXCEPT
Devuelve la diferencia (resta) de dos o más conjuntos de resultados. El conjunto obtenido como resultado de EXCEPT tiene la misma estructura que los conjuntos originales.
 El siguiente ejemplo muestra el uso de EXCEPT


SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM EMPLEADOS
UNION ALL
SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM CLIENTES

El uso de EXCEPT, como norma general, es mucho más rápido que utilizar condiciones NOT IN oEXISTS en la clausula WHERE.


 INTERSECT
Devuelve la intersección entre dos o más conjuntos de resultados en uno. El conjunto obtenido como resultado de INTERSECT tiene la misma estructura que los conjuntos originales.
El siguiente ejemplo muestra el uso de INTERSECT


SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM EMPLEADOS
EXCEPTSELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM CLIENTES
< class="texto">


SELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM EMPLEADOS
INTERSECTSELECT Nombre, Apellido1 , Apellido2, NifCif, FxNacimiento
FROM CLIENTES