Cualquier consulta puede ser descrita matemáticamente (Algebra
Relacional es el término utilizado para esto).
Toda sentencia SELECT devuelve un conjunto de
filas. Los operadores de conjuntos toman como entrada el resultado de dos o más
sentencias SELECT y de estos generan un
solo conjunto de resultado. Esto es conocido como Consulta Compuestas. Oracle
provee tres operadores de conjunto. UNION, INTERSECT y MINUS. UNION pueden ser
cualificados con la palabra ALL. Oracle no utiliza la palabra EXCEPT para eso
utiliza MINUS, su funcionalidad es la misma. La única diferencia sería cuando
migráramos de un gestor a otro ya que los otros manejan la palabra EXCEPT.
- · UNION. Devuelve la combinación de filas de dos consultas, ordenadas y sin duplicados.
- · UNION ALL. Devuelve la combinación de filas de dos consultas sin ordenar y sin remover duplicados.
- · INTERSECT. Devuelve solo las filas que aparecen en ambas consultas, ordenas y sin duplicados.
- · MINUS. Devuelve las filas de la primera consulta que no aparecen en la segunda consulta, ordenadas y sin duplicados.
Estos comandos son los equivalentes a los operadores estándar
utilizados en matemáticas y manejados gráficamente como Diagramas de Venn.
Principios Generales de los Operadores de Conjunto.
Todos los Operadores de Conjunto crean Consultas Compuestas mediante
la combinación de dos o más conjuntos de
datos. Si una sentencia SELECT incluye más de un operador de conjunto. Ellos
serán aplicados en el orden que se especifico en la programación, de arriba
abajo o de izquierda a derecha. Actualmente no hay prioridad de un operador
sobre otro. Para manejar la precedencia podemos manejas los paréntesis.
Cada Consulta en una Consulta Compuesta proyectara su propia lista de columnas. Estas
lista deberán tener el mismo número de elementos, serán nominadas en la misma
secuencia y serán ampliamente similar en el tipo de dato. No tiene que tener el
mismo nombre de columna, ni la necesidad de proceder de la misma tabla (o
subquerys). Si los nombres de columnas son diferentes. El resultado de la
Consulta compuesta tendrá nombres de columnas como la primera consulta.
La lista de columnas seleccionadas no tienen que ser exactamente del
mismo tipo, pero deben de ser del mismo grupo de tipo de dato. Ejemplo, las columnas
de la consulta 1 son DATE y NUMBER y de la segunda consulta TIMESTAMP e
INTEGER. El resultado de la consulta compuesta tendrá las columnas con el tipo
de más alta precisión. En este caso TIMETAMP y NUMBER.
Los operadores de conjunto no realizan casting de tipo. Siguiendo con
el ejemplo anterior, digamos que la segunda consulta devuelve las columnas de
tipo VARCHAR2 esto levantara un error. Incluso si la información de los campos
VARCHAR2 sea información fecha y numero.
UNION, MINUS e INTERSECT siempre combinan los conjuntos de datos que
se reciben como entrada proveniente de dos o más consultas, ordenan el
resultado y eliminan duplicados.
El ordenamiento es basado sobre todas las columnas, de izquierda a
derecha. Si todas las columnas en dos filas tienen el mismo valor, entonces
solo la primera fila es devuelta en el conjunto de datos resultante. Un efecto
secundario de esto es que la salida de una consulta compuesta es ordenada. Si
el ordenamiento no es el que usted desea. Es posible poner una sola clausula
ORDER BY al final de la consulta compuesta y no es posible ponérselo
individualmente a cada consulta.
UNION ALL es la excepción para la reglas ordenamiento y duplicados. El
resultado de cada consulta es concatenado
y seria la salida de la consulta compuesta. Y usted puede utilizar la
clausula ORDER BY en las consultas individuales y también puede aparecen en el
final de la consulta compuesta donde será aplicado al consulta resultante de la
consulta compuesta.
Comentarios
Publicar un comentario