El mundo de las bases de datos relacionales se fundamenta en principios matemáticos sólidos, derivados principalmente del Álgebra Relacional y la teoría de conjuntos. Estas bases teóricas no solo nos ayudan a comprender cómo funcionan las bases de datos por dentro, sino que también nos proporcionan las herramientas necesarias para interactuar con los datos de manera eficiente. Una de las operaciones fundamentales heredadas de la teoría de conjuntos y adaptada al contexto de las bases de datos es la operación de Unión.
https://www.youtube.com/watch?v=0gcJCdgAo7VqN5tD
El Álgebra Relacional es un lenguaje procedural que opera sobre relaciones (tablas) y produce nuevas relaciones, sin modificar las originales. Es la base teórica sobre la que se construyen los lenguajes de consulta como SQL (Structured Query Language). Dentro de las operaciones básicas del Álgebra Relacional encontramos la proyección, la selección, el producto cartesiano, la diferencia de conjuntos y, por supuesto, la unión.

La teoría de conjuntos define la unión de dos conjuntos A y B (denotada A ∪ B) como el conjunto de todos los elementos distintos que pertenecen a A, o a B, o a ambos. En términos simples, es la combinación de todos los elementos de ambos conjuntos, eliminando cualquier duplicado. Esta misma idea se traslada a las bases de datos relacionales, donde los 'conjuntos' son las tablas o los resultados de consultas.
- ¿Qué es la Operación UNION en Bases de Datos?
- La Variante UNION ALL
- UNION vs UNION ALL: ¿Cuál Usar?
- Requisitos y Consideraciones Adicionales
- Otras Operaciones de Conjuntos en Bases de Datos
- Preguntas Frecuentes sobre UNION y UNION ALL
- ¿Necesito ordenar los resultados de las sentencias SELECT individuales antes de la UNION?
- ¿Puedo usar UNION para combinar tablas con diferentes nombres de columna?
- ¿Qué pasa si los tipos de datos son similares pero no idénticos (por ejemplo, INT y BIGINT)?
- ¿UNION y UNION ALL funcionan con todas las bases de datos?
- Conclusión
¿Qué es la Operación UNION en Bases de Datos?
En el contexto de las bases de datos relacionales, la operación UNION se utiliza para combinar los conjuntos de resultados de dos o más sentencias SELECT. El resultado es un único conjunto de resultados que contiene todas las filas de todas las sentencias SELECT, eliminando automáticamente las filas duplicadas.
Para que la operación UNION sea válida, las sentencias SELECT que se combinan deben cumplir ciertos requisitos:
- Deben tener el mismo número de columnas.
- Las columnas correspondientes en cada sentencia
SELECTdeben tener tipos de datos compatibles. - El orden y el nombre de las columnas en el resultado final se determinan generalmente por la primera sentencia
SELECT.
Conceptualmente, si tienes dos tablas (o resultados de consulta) que representan conjuntos de datos con una estructura compatible, UNION te permite crear una nueva tabla que es la suma de ambas, pero sin repeticiones. Es como fusionar dos listas de clientes de diferentes sucursales, pero asegurándote de que cada cliente aparezca solo una vez en la lista final.
Ejemplo Conceptual de UNION
Imagina que tienes dos tablas simples:
Tabla 1: Empleados_TI
| ID_Empleado | Nombre |
|---|---|
| 101 | Ana |
| 102 | Luis |
| 103 | Carlos |
Tabla 2: Empleados_Ventas
| ID_Empleado | Nombre |
|---|---|
| 103 | Carlos |
| 104 | Marta |
| 105 | Pedro |
Si aplicas la operación UNION entre estas dos tablas (considerando las columnas ID_Empleado y Nombre), el resultado sería:
Resultado UNION
| ID_Empleado | Nombre |
|---|---|
| 101 | Ana |
| 102 | Luis |
| 103 | Carlos |
| 104 | Marta |
| 105 | Pedro |
Observa que 'Carlos' (ID 103) aparece en ambas tablas originales, pero solo una vez en el resultado de la UNION, ya que UNION elimina los Duplicados.
La Variante UNION ALL
Aunque UNION es la operación que replica fielmente la unión de conjuntos de la teoría matemática (eliminando duplicados), en el contexto de bases de datos, a menudo es útil combinar resultados sin el costo adicional de verificar y eliminar duplicados. Para esto existe la operación UNION ALL.
UNION ALL combina los conjuntos de resultados de dos o más sentencias SELECT, pero a diferencia de UNION, mantiene *todas* las filas de todas las sentencias, incluyendo las filas duplicadas. Esto la hace generalmente más rápida que UNION, ya que no necesita realizar el proceso de ordenamiento y eliminación de duplicados.
Los requisitos para usar UNION ALL son los mismos que para UNION: el mismo número de columnas y tipos de datos compatibles en las columnas correspondientes.
Ejemplo Conceptual de UNION ALL
Usando las mismas tablas de ejemplo:
Tabla 1: Empleados_TI
| ID_Empleado | Nombre |
|---|---|
| 101 | Ana |
| 102 | Luis |
| 103 | Carlos |
Tabla 2: Empleados_Ventas
| ID_Empleado | Nombre |
|---|---|
| 103 | Carlos |
| 104 | Marta |
| 105 | Pedro |
Si aplicas la operación UNION ALL entre estas dos tablas, el resultado sería:
Resultado UNION ALL
| ID_Empleado | Nombre |
|---|---|
| 101 | Ana |
| 102 | Luis |
| 103 | Carlos |
| 103 | Carlos |
| 104 | Marta |
| 105 | Pedro |
Aquí, 'Carlos' (ID 103) aparece dos veces en el resultado, reflejando su presencia en ambas tablas originales. UNION ALL simplemente concatena los resultados.
UNION vs UNION ALL: ¿Cuál Usar?
La elección entre UNION y UNION ALL depende de si necesitas o no eliminar filas duplicadas y de la consideración del rendimiento. Aquí hay una comparación clave:
| Característica | UNION | UNION ALL |
|---|---|---|
| Eliminación de duplicados | Sí | No |
| Ordenación del resultado | Generalmente sí (implícita por la eliminación de duplicados) | No (el orden es el de las sentencias combinadas) |
| Rendimiento | Puede ser más lento (requiere procesamiento de duplicados) | Generalmente más rápido |
| Uso principal | Combinar resultados únicos | Combinar todos los resultados, incluyendo duplicados |
| Base teórica | Unión de Conjuntos | Concatenación de listas |
Si sabes que los conjuntos de resultados que estás combinando no tienen duplicados (por ejemplo, porque provienen de diferentes particiones de datos garantizadas sin solapamiento), o si no te importa que haya duplicados, usar UNION ALL es la opción más eficiente en términos de rendimiento. Si es crucial que cada fila en el resultado final sea única, entonces debes usar UNION.

Requisitos y Consideraciones Adicionales
Es fundamental recordar los requisitos de compatibilidad al usar UNION o UNION ALL. El número de columnas y la compatibilidad de sus tipos de datos son estrictos. Si intentas combinar sentencias SELECT con diferentes estructuras, recibirás un error.
Aunque el orden de las columnas en el resultado final se basa en la primera sentencia SELECT, puedes usar alias de columna o funciones en las sentencias SELECT individuales. Sin embargo, para que la UNION funcione correctamente, las columnas correspondientes deben ser lógicamente comparables.
La operación UNION (y UNION ALL) se puede extender para combinar más de dos sentencias SELECT. Simplemente encadena las operaciones:
SELECT columna1, columna2 FROM tabla1
UNION
SELECT columna1, columna2 FROM tabla2
UNION
SELECT columna1, columna2 FROM tabla3;
El proceso de eliminación de duplicados en UNION puede implicar ordenar el conjunto combinado de resultados para identificar filas idénticas. Si necesitas ordenar el resultado final de una operación UNION o UNION ALL, debes aplicar la cláusula ORDER BY *después* de la última sentencia SELECT.
SELECT columna1, columna2 FROM tabla1
UNION
SELECT columna1, columna2 FROM tabla2
ORDER BY columna1;
Otras Operaciones de Conjuntos en Bases de Datos
Además de UNION, las bases de datos relacionales suelen soportar otras operaciones de conjuntos derivadas del Álgebra Relacional:
INTERSECT: Retorna solo las filas que existen en *ambos* conjuntos de resultados de las sentenciasSELECT. Es la intersección de conjuntos. También elimina duplicados.EXCEPT(oMINUSen algunas bases de datos como Oracle): Retorna solo las filas que existen en el primer conjunto de resultados pero *no* en el segundo. Es la diferencia de conjuntos. También elimina duplicados.
Estas operaciones, al igual que UNION, requieren que las sentencias SELECT tengan el mismo número de columnas y tipos de datos compatibles. Son herramientas muy potentes para comparar y contrastar conjuntos de datos provenientes de diferentes fuentes o criterios.
Preguntas Frecuentes sobre UNION y UNION ALL
Aquí respondemos algunas dudas comunes sobre estas operaciones:
¿Necesito ordenar los resultados de las sentencias SELECT individuales antes de la UNION?
No, no es necesario. La cláusula ORDER BY aplicada a sentencias SELECT individuales dentro de una UNION o UNION ALL no afecta el orden del resultado final. Si necesitas un orden específico, aplica ORDER BY al final de toda la sentencia combinada.
¿Puedo usar UNION para combinar tablas con diferentes nombres de columna?
Sí, siempre y cuando el número de columnas sea el mismo y los tipos de datos correspondientes sean compatibles. Los nombres de las columnas en el resultado final se toman generalmente de la primera sentencia SELECT. Puedes usar alias en las sentencias subsiguientes para que sea más claro qué columna se corresponde con cuál.
¿Qué pasa si los tipos de datos son similares pero no idénticos (por ejemplo, INT y BIGINT)?
Siempre que los tipos de datos sean *compatibles* para una conversión implícita o explícita por parte del sistema de base de datos, la operación UNION o UNION ALL funcionará. Sin embargo, es buena práctica asegurarse de que los tipos de datos sean lo más consistentes posible para evitar sorpresas o problemas de rendimiento.
¿UNION y UNION ALL funcionan con todas las bases de datos?
Sí, UNION y UNION ALL son operadores estándar en SQL y son soportados por la gran mayoría de sistemas de gestión de bases de datos relacionales (como MySQL, PostgreSQL, SQL Server, Oracle, etc.). La sintaxis básica es la misma, aunque puede haber pequeñas variaciones o extensiones específicas del proveedor.
Conclusión
La operación UNION, junto con su variante UNION ALL, es una herramienta esencial en el repertorio de cualquier persona que trabaje con bases de datos relacionales. Permite combinar de manera efectiva conjuntos de datos provenientes de diferentes fuentes o criterios de selección, facilitando la consolidación y el análisis de información. Comprender la diferencia entre UNION (que elimina duplicados) y UNION ALL (que los mantiene) es crucial para escribir consultas eficientes y obtener resultados precisos. Al dominar estas operaciones y sus requisitos, podrás explotar al máximo el potencial de tus bases de datos.
Si quieres conocer otros artículos parecidos a La Operación UNION en Bases de Datos puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL