Ir al contenido principal

Operadores de Conjuntos

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