Está en la página 1de 20

CAPITULO 8

Usando Operadores de Conjuntos


Objetivos

◼ Después de este capítulo, usted estará en


capacidad de:
◼ Describir los operadores de conjuntos
◼ Usar un operador de conjuntos para combinar
múltiples consultas en una sola
◼ Controlar el orden de las filas retornadas

8-2
Operadores de Conjuntos

Incluye
valores
duplicados

UNION UNION ALL

INTERSECT MINUS

8-3
Operadores de Conjuntos

◼ Combinan los resultados de dos o más consultas en un único


resultado.
◼ Las filas duplicadas se eliminan automáticamente, excepto en
UNION ALL.
◼ Los nombres de columna que aparecen en los resultados son
los de la primera consulta.
◼ Por defecto la salida es ordenada en orden ascendente de acuerdo a
la primera columna de la clausula SELECT.

8-4
Operadores de Conjuntos

◼ En los diferentes SELECT que componen la consulta, debe


concordar el Número de columnas y Tipo de datos.
◼ El tipo de dato es retornado de acuerdo a:
◼ CHAR de igual longitud, CHAR de esa longitud.

◼ CHAR de != longitud, VARCHAR2 con mayor longitud.

◼ Uno o dos VARCHAR2, VARCHAR2.

◼ Uno carácter y otro número, Oracle reporta error, con los


operadores de conjuntos Oracle no realiza conversión implícita.

8-5
Operadores de Conjuntos

◼ Todos los operadores de conjunto tienen la misma


precedencia.
◼ Si una consulta tiene varios operadores de conjunto, Oracle las evalúa
de izquierda (arriba) a derecha (abajo).

◼ El usuario puede usar paréntesis para especificar (alterar) el


orden de evaluación.
◼ Muy útil cuando se usa el operador INTERSECT al mismo tiempo con
otros operadores de conjunto.

8-6
Tabla nueva para los ejemplos
◼ Para realizar los ejemplos, se asume que una empresa inicio
sus operaciones en 1998 y en el 2000 debió cerrar.

◼ Luego en el 2001 reinició labores contratando algunos


empleados antiguos y otros nuevos.

◼ La tabla HistoricoDeEmpleados almacena los empleados de la


primer fase de operaciones de la empresa.

◼ En la siguiente diapositiva se muestra el contenido de la tabla


Empleados y de HistoricoDeEmpleados.

8-7
Tabla nueva para los ejemplos

No
Nuevos empleados contratados
nuevamente
8-8
UNION
A

◼ Retorna los resultados de las dos


consultas eliminando los valores
duplicados.

8-9
UNION
◼ El número de columnas y los de tipos de datos de las
columnas seleccionadas en las consultas deben concordar.
Los nombres de las columnas no necesitan ser idénticas.
◼ Los valores NULL, se tienen en cuenta como un valor
durante el chequeo de duplicados.

◼ El operador IN tiene mayor precedencia que el operador de


conjunto UNION.
◼ Por defecto, la salida se ordena en orden ascendente de las
columnas de la cláusula SELECT.
8-10
UNION

◼ Algunos registros salen


duplicados debido a que la
fecha de contrato hace a los
dos registros diferentes, por
ejemplo, LOPEZ, BENAVIDEZ
y otros.

8-11
UNION ALL

◼ Retorna los resultados de las dos consultas


SIN eliminar los valores duplicados y sin
ordenar.
◼ La palabra clave DISTINCT no se puede
usar con UNION ALL.

A
B

8-12
INTERSECT
A
◼ Retorna las filas que son comunes a las
consultas. B

◼ El número de columnas y los tipos de


datos de las columnas seleccionadas en
las consultas deben concordar. Los
nombres de las columnas no necesitan
ser idénticas.

◼ El orden de las tablas NO altera el


resultado.

◼ INTERSECT NO ignora los valores NULL.

8-13
MINUS

◼ Retorna las filas de la primer consulta


que no están en los resultados de la
segunda consulta.

◼ El número de columnas y los tipos de


datos de las columnas seleccionadas
en las consultas deben concordar. Los
nombres de las columnas no
necesitan ser idénticas.

8-14
Guías adicionales para los operadores

◼ Cuando una consulta no tiene la misma cantidad de columnas


seleccionadas, debe completarse, usando por ejemplo TO_CHAR
(NULL).

◼ Los resultados se ordenan ascendentemente por defecto según


la primer columna de la sentencia SELECT, excepto en UNION
ALL.

◼ La cláusula ORDER BY:


◼ Puede aparecer sólo una vez al final de la sentencia.
◼ Puede aceptar el nombre de la columna o el alias de la primer
sentencia SELECT o la notación de posición.

◼ Los operadores de conjuntos pueden ser usados en


subconsultas.

8-15
Ordenando resultados

8-16
Guías adicionales para los operadores

◼ Cuando se usa un
operador de conjuntos
en la cláusula WHERE,
debe existir
coincidencia entre las
columnas de la
condición y las del
resultado del operador
de conjunto.

8-17
Quiz

◼ Identifique las guías que aplican a los operadores de


conjuntos:
1. Las expresiones en las clausulas SELECT deben concordar en
número
2. Los paréntesis no pueden ser usados para alterar la secuencia
de ejecución de la consulta
3. Los grupos de tipos de datos de las columnas de la segunda
consulta deben concordar con los de la primera consulta
4. La clausula ORDER BY puede ser usada sólo una vez en una
consulta compuesta a menos que se use el operador UNION
ALL

8-18
Resumen

◼ En esta lección usted debió aprender que:


◼ El operador UNION retorna todas las filas distintas
◼ El operador UNION ALL retorna todas las filas, incluyendo
duplicados
◼ El operador INTERSECT retorna las filas que son comunes a
las subconsultas
◼ El operador MINUS retorna sólo las filas que están en la
primer consulta y NO en la segunda consulta
◼ La cláusula ORDER BY debe aparecer sólo una vez y al final
de la sentencia

8-19
Practica 8

◼ Realizar una práctica de cinco (5) puntos que


permite practicar:
◼ El uso de operadores de conjunto
◼ Otra forma de combinar filas de distintas
subconsultas

8-20

También podría gustarte