stringtranslate.com

Establecer operaciones (SQL)

Las operaciones de conjunto en SQL son un tipo de operaciones que permiten combinar los resultados de múltiples consultas en un único conjunto de resultados . [1]

Los operadores de conjuntos en SQL incluyen UNION, INTERSECTy EXCEPT, que corresponden matemáticamente a los conceptos de unión , intersección y diferencia de conjuntos .

operador de la UNIÓN

En SQL, la UNIONcláusula combina los resultados de dos consultas SQL en una sola tabla de todas las filas coincidentes . Las dos consultas deben dar como resultado la misma cantidad de columnas y tipos de datos compatibles para poder unirse. Cualquier registro duplicado se elimina automáticamente a menos que UNION ALLse utilice.

UNIONPuede resultar útil en aplicaciones de almacenamiento de datos donde las tablas no están perfectamente normalizadas . [2] Un ejemplo simple sería una base de datos que tiene tablas sales2005y sales2006estructuras idénticas pero están separadas por consideraciones de rendimiento. Una UNIONconsulta podría combinar resultados de ambas tablas.

Tenga en cuenta que UNION ALLno garantiza el orden de las filas. Las filas del segundo operando pueden aparecer antes, después o mezcladas con las filas del primer operando. En situaciones donde se desea un orden específico, ORDER BYse debe utilizar.

Tenga en cuenta que UNION ALLpuede ser mucho más rápido que el simple UNION.

Ejemplos

Dadas estas dos tablas:

Ejecutando esta declaración:

SELECCIONAR * DE ventas2005 UNION SELECCIONAR * DE ventas2006 ;      

produce este conjunto de resultados, aunque el orden de las filas puede variar porque no ORDER BYse proporcionó ninguna cláusula:

Tenga en cuenta que hay dos filas para Joe porque esas filas son distintas en sus columnas. Solo hay una fila para Alex porque esas filas no son distintas para ambas columnas.

UNION ALLda resultados diferentes, porque no eliminará duplicados. Ejecutando esta declaración:

SELECCIONAR * DE ventas2005 UNION TODO SELECCIONAR * DE ventas2006 ;       

daría estos resultados, permitiendo nuevamente la variación por la falta de una ORDER BYdeclaración:

La discusión sobre uniones externas completas también tiene un ejemplo que usa UNION.

operador INTERSECTAR

El operador SQL INTERSECTtoma los resultados de dos consultas y devuelve sólo filas que aparecen en ambos conjuntos de resultados. Para fines de eliminación de duplicados, el INTERSECToperador no distingue entre NULLs. El INTERSECToperador elimina filas duplicadas del conjunto de resultados final. El INTERSECT ALLoperador no elimina filas duplicadas del conjunto de resultados final, pero si una fila aparece X veces en la primera consulta e Y veces en la segunda, aparecerá veces en el conjunto de resultados.

Ejemplo

La siguiente INTERSECTconsulta de ejemplo devuelve todas las filas de la tabla Pedidos donde la Cantidad está entre 50 y 100.

SELECCIONAR * DE Pedidos DONDE Cantidad ENTRE 1 Y 100       INTERSECARSESELECCIONE * DE Pedidos DONDE Cantidad ENTRE 50 Y 200 ;       

EXCEPTO operador

El operador SQL EXCEPTtoma las distintas filas de una consulta y devuelve las filas que no aparecen en un segundo conjunto de resultados. Para fines de eliminación de filas y eliminación de duplicados, el EXCEPToperador no distingue entre NULLs. El EXCEPT ALLoperador no elimina duplicados, pero si una fila aparece X veces en la primera consulta e Y veces en la segunda, aparecerá veces en el conjunto de resultados.

En particular, la plataforma Oracle proporciona un MINUSoperador que es funcionalmente equivalente al operador estándar SQL EXCEPT DISTINCT . [3]

Ejemplo

La siguiente EXCEPTconsulta de ejemplo devuelve todas las filas de la tabla Pedidos donde la Cantidad está entre 1 y 49, y aquellas con una Cantidad entre 76 y 100.

Dicho de otra manera; la consulta devuelve todas las filas donde la Cantidad está entre 1 y 100, excepto las filas donde la cantidad está entre 50 y 75.

SELECCIONAR * DE Pedidos DONDE Cantidad ENTRE 1 Y 100       EXCEPTOSELECCIONE * DE Pedidos DONDE Cantidad ENTRE 50 Y 75 ;       

Ejemplo

El siguiente ejemplo es equivalente al ejemplo anterior pero sin utilizar el EXCEPToperador.

SELECCIONAR o1 . * DESDE ( SELECCIONAR * DESDE Órdenes DONDE Cantidad ENTRE 1 Y 100 ) o1 IZQUIERDA UNIR ( SELECCIONAR * DESDE Órdenes DONDE Cantidad ENTRE 50 Y 75 ) o2 EN o1 . identificación = o2 . identificación DONDE o2 . la identificación ES NULA                                

Ver también

Referencias

  1. ^ "Los operadores UNION [TODOS], INTERSECT, MENOS". Oráculo . Consultado el 14 de julio de 2016 .
  2. ^ " una UNION ALLtécnica de vistas para gestionar el mantenimiento y el rendimiento en su entorno de almacén de datos de gran tamaño... Esta UNION ALLtécnica ha salvado a muchos de mis clientes de problemas relacionados con diseños de bases de datos urgentes. Estas bases de datos suelen tener un marco de tiempo, mes o período actual extremadamente volátil "La parte del día y los datos más antiguos rara vez se actualizan. Utilizando diferentes asignaciones DASD de contenedores, espacios de tabla, tablas y definiciones de índice, la configuración se puede ajustar para las consideraciones de rendimiento específicas para estos diferentes niveles de volatilidad y situaciones de frecuencia de actualización. " Diseño de tablas de almacenamiento de datos de terabytes Opciones - Parte 2 (consultado el 25 de julio de 2006)
  3. ^ "E071-03, EXCEPT DISTINCToperador de tabla: utilizar MINUSen lugar de EXCEPT DISTINCT" "Cumplimiento de Oracle con Core SQL:2003". Docs.oracle.com . Consultado el 7 de julio de 2022 .

enlaces externos