Ir al contenido principal

Operadores de conjuntos en SQL: guía completa

Domina los operadores de conjuntos en SQL: UNION, UNION ALL, INTERSECT y EXCEPT. Aprende la sintaxis, ve ejemplos prácticos y entiende cuándo usar cada operador.
Actualizado 2 jun 2026  · 11 min leer

Las operaciones de conjuntos son la base de SQL y nos permiten combinar, comparar y filtrar datos de varias fuentes. Son imprescindibles para tareas que van desde la integración y la limpieza de datos hasta el análisis avanzado y la elaboración de informes.

En este tutorial veremos qué son los operadores de conjuntos, cómo se usan en SQL, sus aplicaciones prácticas y mucho más. Si buscas un recurso completo para aprender SQL, echa un vistazo a este itinerario de habilidades de siete cursos: SQL Fundamentals.

Si vas con prisa, empecemos con una respuesta rápida sobre qué son las operaciones de conjuntos en SQL.

Obtén una Certificación Top SQL

Demuestra tus conocimientos básicos de SQL y avanza en tu carrera de datos.
Certifícate en SQL

¿Qué son las operaciones de conjuntos en SQL?

Las operaciones de conjuntos en SQL son técnicas para combinar o comparar los resultados de dos o más sentencias SELECT. Funcionan como las operaciones de conjuntos en matemáticas, permitiéndonos obtener la unión, la intersección o la diferencia entre las filas que devuelven nuestras consultas. Por eso son tan útiles cuando analizas datos desde varias fuentes o perspectivas.

Aquí tienes un resumen rápido de las operaciones principales:

  • UNION: fusiona todas las filas únicas de dos o más SELECT, eliminando duplicados.

  • UNION ALL: fusiona todas las filas de dos o más SELECT, conservando los duplicados.

  • INTERSECT: devuelve solo las filas que aparecen en ambos SELECT.

  • EXCEPT: devuelve las filas del primer SELECT que no aparecen en el segundo.

Comparación con las operaciones del álgebra relacional

El álgebra relacional es un marco teórico que sirve de base para entender las consultas a bases de datos. Ofrece operaciones abstractas como proyección, selección y join, con raíces matemáticas e independientes de sistemas concretos. Piénsalo como la lógica "entre bastidores" que impulsa nuestras interacciones con la base de datos.

Los operadores de conjuntos en SQL son la implementación práctica de estos conceptos dentro de un entorno de base de datos. Nos permiten realizar uniones, intersecciones y diferencias directamente sobre los conjuntos de resultados de consultas SQL.

Mientras que el álgebra relacional aporta el fundamento formal de las operaciones, los operadores de conjuntos en SQL ofrecen una interfaz estandarizada y fácil de usar para la manipulación de datos.

Comprender la relación entre los operadores de conjuntos y el álgebra relacional te da perspectiva sobre los pilares teóricos de SQL. Saber este vínculo te ayuda a escribir consultas con un mejor modelo mental de lo que ocurre por debajo.

Tipos de operadores de conjuntos en SQL

Hay tres operadores de conjuntos principales en SQL:

  • UNION

  • INTERSECT

  • EXCEPT (o MINUS en algunos dialectos)

Estos operadores se corresponden matemáticamente con unión, intersección y diferencia de conjuntos.

Reglas para usar operadores de conjuntos

Antes de combinar consultas con operadores de conjuntos, deben cumplirse cuatro requisitos. Si fallas en alguno, tu consulta dará error.

  • Mismo número de columnas: cada SELECT debe devolver el mismo número de columnas. Si una consulta devuelve tres y otra dos, la base de datos lanzará un error.

  • Tipos de datos compatibles: las columnas correspondientes deben tener tipos compatibles. No puedes combinar en la misma posición una columna VARCHAR de nombres con un INTEGER de IDs.

  • Mismo orden de columnas: SQL mapea por posición, no por nombre. La primera columna de la primera consulta se corresponde con la primera de la segunda, independientemente de cómo se llamen.

  • ORDER BY solo al final: ORDER BY debe aparecer una única vez, al final de la consulta combinada. No puedes usarlo dentro de cada SELECT.

Un detalle más: los nombres de las columnas en la salida provienen del primer SELECT. Los alias en consultas posteriores se ignoran, así que añade alias solo al primer SELECT si necesitas nombres personalizados.

Cómo usar el operador UNION en SQL

El operador UNION combina los resultados de dos o más consultas SELECT en un único conjunto de resultados, eliminando por defecto las filas duplicadas.

Por ejemplo, supongamos que tenemos dos tablas, employees y contractors, cada una con columnas similares como name, department y salary. A efectos didácticos, consideremos estas dos tablas de ejemplo:

employees:

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

Carol

Engineering

80000

John

HR

55000

contractors:

name

department

salary

David

Marketing

60000

Eva

Sales

68000

Carol

Engineering

75000

Podemos combinar los resultados de ambas tablas con el siguiente comando:

-- Using UNION to combine all employees and contractors
SELECT name, department, salary FROM employees
UNION
SELECT name, department, salary FROM contractors;

Esta consulta selecciona las columnas name, department y salary de las tablas employees y contractors y las combina en un único conjunto de resultados. El operador UNION elimina automáticamente las filas duplicadas del resultado final.

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

Carol

Engineering

80000

John

HR

55000

David

Marketing

60000

Eva

Sales

68000

Fíjate en que Carol, que aparece en ambas tablas, solo se lista una vez en el resultado. Si quisiéramos conservar ambas apariciones de Carol (con sus salarios distintos), usaríamos UNION ALL.

UNION vs UNION ALL

El operador UNION no elimina los valores NULL. Si una columna contiene valores NULL en un conjunto de resultados y valores no NULL en la columna correspondiente del otro, los NULL se mantendrán en el resultado final producido por UNION.

Si queremos incluir los valores NULL en el conjunto de resultados y evitar su eliminación por parte de UNION, podemos usar UNION ALL. Este operador combina los resultados de varias consultas SELECT, incluyendo todas las filas de cada conjunto, sean duplicadas o contengan NULL.

Cómo usar el operador INTERSECT en SQL

El operador INTERSECT devuelve solo las filas que aparecen en ambos conjuntos de resultados. Es como buscar las personas que pertenecen a los dos grupos.

Usemos INTERSECT para consultar nuestras tablas anteriores. Para el ejemplo, consultaremos solo las columnas de nombre y departamento:

-- Using INTERSECT to find common employees
SELECT name, department FROM employees
INTERSECT
SELECT name, department FROM contractors;

Esta consulta selecciona las columnas name y department de las tablas employees y contractors y devuelve solo las filas que existen en ambas tablas según todas las columnas seleccionadas.

name

department

Carol

Engineering

El operador INTERSECT gestiona los valores NULL según las reglas estándar de comparación, considerando iguales los NULL al comparar columnas correspondientes. También produce un conjunto vacío cuando trabaja con conjuntos de resultados vacíos.

Es decir, si en un conjunto de resultados hay un NULL y en la columna correspondiente del otro hay un valor no NULL, las filas no se consideran iguales y no se incluirán en la intersección.

Además, si uno de los conjuntos de resultados que se pasa a INTERSECT está vacío, el resultado total también lo estará. No hay filas en común entre un conjunto vacío y cualquier otro.

Cómo usar el operador EXCEPT en SQL

El operador EXCEPT devuelve las filas del primer conjunto de resultados que no están en el segundo.

En Oracle Database, EXCEPT se escribe como MINUS; los demás dialectos principales (PostgreSQL, SQL Server, MySQL 8.0.31+, SQLite) usan EXCEPT.

Por ejemplo, supongamos que ejecutamos la siguiente consulta:

-- Using EXCEPT to find employees who are not contractors
SELECT name, department, salary FROM employees
EXCEPT
SELECT name, department, salary FROM contractors;

Se seleccionan las columnas name, department y salary de la tabla employees y se devuelven solo las filas que no existen en la tabla contractors.

name

department

salary

Alice

Marketing

65000

Bob

Sales

70000

John

HR

55000

El operador EXCEPT también sigue las reglas estándar de comparación para gestionar valores NULL. Su comportamiento con conjuntos vacíos da como resultado un conjunto vacío si el primer conjunto está vacío, o incluye todas las filas del primero si el segundo conjunto está vacío.

Operadores de conjuntos en SQL: rendimiento y optimización

El impacto de los operadores de conjuntos en el rendimiento de las consultas en SQL puede variar según factores como el tamaño de los conjuntos de datos, la complejidad de las consultas y el sistema de gestión de bases de datos (SGBD) utilizado.

Veamos los factores clave y las estrategias de optimización.

Volumen de datos y complejidad de la consulta

Al trabajar con grandes volúmenes de datos, los operadores de conjuntos pueden afectar notablemente al rendimiento porque aumenta el tamaño de los resultados que hay que combinar, intersectar o comparar, y con ello el tiempo de proceso.

Las consultas complejas con múltiples subconsultas, joins u operadores de conjuntos pueden añadir sobrecarga de procesamiento y empeorar el rendimiento. Operaciones encadenadas o anidadas pueden agravar aún más el impacto.

Indexación y técnicas de optimización

Una indexación adecuada de las columnas implicadas en operaciones de conjuntos puede mejorar significativamente el rendimiento. Los índices ayudan al motor a localizar y recuperar filas relevantes sin escanear tablas completas, acelerando la ejecución.

Para mejorar el rendimiento de consultas con operadores de conjuntos, administradores y desarrolladores pueden aplicar técnicas como reescritura de consultas, análisis de planes de ejecución y optimización del esquema. También pueden usarse caché de consultas y vistas materializadas para precomputar y almacenar resultados complejos, reduciendo el coste computacional.

Motor de base de datos y recursos de hardware

El rendimiento puede variar según el motor de base de datos y su capacidad de optimización. Distintos SGBD emplean estrategias y algoritmos diferentes para procesar estas operaciones, lo que puede dar lugar a variaciones de rendimiento.

La disponibilidad de recursos de hardware como CPU, memoria y E/S de disco también influye en el rendimiento de consultas con operadores de conjuntos. Contar con recursos suficientes ayuda a mitigar cuellos de botella y a garantizar una ejecución eficiente.

Operadores de conjuntos en la práctica

Los operadores de conjuntos no son solo teoría; tienen aplicaciones reales que pueden influir en decisiones de negocio. Veamos un ejemplo simplificado de cómo una empresa podría usarlos para segmentar su base de clientes y lanzar campañas de marketing más afinadas.

El escenario

Imagina una empresa que vende tanto online como en tienda física. Disponen de dos conjuntos de datos:

  1. Compras online: ID de cliente, historial de compras, datos demográficos y ubicación de los compradores online.
  2. Transacciones en tienda: Información similar de los clientes que compraron en persona.

Uso de los operadores de conjuntos

Para obtener una visión completa de todos los clientes, primero usarían UNION para combinar ambos conjuntos en una sola tabla, eliminando duplicados. Así logran una vista unificada de toda su base de clientes.

Después, podrían usar INTERSECT para identificar a quienes han comprado tanto online como en tienda. Este segmento es especialmente valioso porque muestra un alto nivel de interacción con la marca en varios canales.

Para detectar oportunidades de promoción cruzada, podrían usar EXCEPT. Por ejemplo, SELECT * FROM online_purchases EXCEPT SELECT * FROM in_store_transactions encontraría clientes que solo han comprado online pero no en tienda. A estos clientes se les podrían dirigir promociones para animarlos a visitar un establecimiento físico.

Más allá de la segmentación

Con estos segmentos identificados, la empresa puede ir más allá y refinarlos por factores adicionales como demografía o historial de compra. Esta comprensión granular permite diseñar campañas de marketing mucho más precisas.

Operadores de conjuntos vs. JOIN

Tanto los operadores de conjuntos como los JOIN de SQL combinan datos de varias consultas, pero funcionan de forma diferente. La pregunta clave es si quieres combinar filas o columnas.

Característica Operadores de conjuntos JOIN
Combina Filas (apila consultas en vertical) Columnas (ensancha filas en horizontal)
Requiere Mismo número de columnas y tipos de datos compatibles Una clave compartida entre tablas
Úsalo cuando Fusiones conjuntos similares, busques solapamientos o diferencias entre resultados Enriquecer una fila con datos relacionados de otra tabla
Gestión de duplicados UNION elimina duplicados; UNION ALL los conserva Depende del tipo de join y de los datos
Tipos UNION, UNION ALL, INTERSECT, EXCEPT/MINUS INNER, LEFT, RIGHT, FULL OUTER, CROSS

Limitaciones y consideraciones de los operadores de conjuntos

Al usar operadores de conjuntos en SQL, conviene tener presentes varias limitaciones y factores que pueden afectar al rendimiento, a la precisión de los resultados y a la usabilidad.

Compatibilidad de tipos y valores NULL

Las columnas correspondientes en los resultados deben tener tipos de datos compatibles. Verifica la compatibilidad antes de combinar consultas. Los desajustes de tipos provocan errores difíciles de detectar.

Los operadores de conjuntos pueden tratar los valores NULL de forma distinta según el SGBD y el operador concreto. Para evitar errores, es importante entender cómo se tratan los NULL.

Impacto en el rendimiento y filas duplicadas

Las operaciones de conjuntos pueden afectar notablemente al rendimiento, especialmente con datos grandes o complejos. Factores como la indexación, la optimización de consultas y los recursos de hardware influyen en el desempeño. Las técnicas de optimización y el tuning son clave para mitigar cuellos de botella.

Por defecto, algunos operadores de conjuntos eliminan filas duplicadas del resultado. Sin embargo, en algunos casos puede ser necesario conservarlas. Es importante entender el comportamiento respecto a duplicados y aplicar las técnicas adecuadas cuando haga falta.

Ordenación de resultados y limitaciones de memoria

Los operadores de conjuntos no garantizan el orden del resultado final. Para ordenar el conjunto combinado, añade una cláusula ORDER BY al final de toda la consulta, después del último SELECT.

Estas operaciones pueden consumir bastante memoria y recursos, sobre todo con conjuntos de datos grandes. Ten en cuenta las limitaciones de memoria y recursos para evitar degradación del rendimiento o inestabilidad del sistema.

Complejidad, mantenimiento y compatibilidad entre SGBD

Las consultas complejas con múltiples operadores de conjuntos, subconsultas y joins pueden ser difíciles de entender, mantener y depurar. Para mejorar su legibilidad y mantenimiento, procura que sean concisas, bien documentadas y modulares.

Los operadores de conjuntos pueden variar en sintaxis y comportamiento según el sistema de gestión de bases de datos. Conocer estas diferencias es clave para escribir SQL compatible entre plataformas.

Conclusión

Los operadores de conjuntos resuelven un problema concreto: combinar o comparar resultados sin saber de antemano qué filas se solapan.

Cubren UNION, INTERSECT y EXCEPT: los tres operadores para unir, comparar y restar conjuntos de resultados.

Si quieres seguir aprendiendo, echa un vistazo a este curso de Joining Data in SQL.

Preguntas frecuentes sobre operadores de SQL

¿Cuál es la diferencia entre UNION ALL y UNION?

UNION ALL incluye todas las filas de ambas consultas, aunque haya duplicados. UNION elimina las filas duplicadas.

¿En qué se diferencia UNION de JOIN en SQL?

UNION combina resultados en vertical, añadiendo filas de una consulta a otra. JOIN combina tablas en horizontal, emparejando filas según una columna relacionada y creando un resultado más ancho.

¿Hay consideraciones de rendimiento al usar operaciones de conjuntos?

Las operaciones de conjuntos pueden ser costosas computacionalmente, especialmente con conjuntos de datos grandes. Es importante optimizar las consultas individuales y usar índices siempre que sea posible para mejorar el rendimiento.

¿Cuál es la diferencia entre EXCEPT y NOT IN?

EXCEPT y NOT IN pueden producir resultados similares, pero se comportan de forma diferente con valores NULL. EXCEPT trata los NULL como iguales al comparar filas, por lo que dos NULL en la misma posición de columna harán que se excluya una fila. NOT IN, en cambio, no devuelve ninguna fila si la subconsulta contiene algún NULL, porque las comparaciones con NULL son indeterminadas en SQL. Para conjuntos grandes, EXCEPT también puede ser más legible que una subconsulta correlacionada con NOT IN.

¿Puedo usar ORDER BY con operadores de conjuntos?

Sí, pero solo una vez y al final de toda la consulta. No puedes usar ORDER BY dentro de cada SELECT en una operación de conjuntos. Para ordenar el resultado combinado, añade una única cláusula ORDER BY después del último SELECT.

Ejemplo:

SELECT name FROM employees
UNION
SELECT name FROM contractors
ORDER BY name ASC;

¿MySQL admite INTERSECT y EXCEPT?

MySQL incorporó compatibilidad con INTERSECT y EXCEPT en la versión 8.0.31. Si usas una versión anterior, tendrás que emularlos: utiliza un INNER JOIN o una subconsulta con IN para replicar INTERSECT, y un LEFT JOIN ... WHERE IS NULL o una subconsulta con NOT IN para replicar EXCEPT. Oracle usa MINUS en lugar de EXCEPT.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Temas

¡Aprende más sobre SQL!

programa

Ingeniero de Datos Asociado en SQL

30 h
¡Aprende los fundamentos de la ingeniería de datos: diseño de bases de datos y almacenamiento de datos, trabajando con tecnologías como PostgreSQL y Snowflake!
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

Tutorial

Tutorial de Python sobre conjuntos y teoría de conjuntos

Aprende sobre los conjuntos en Python: qué son, cómo crearlos, cuándo usarlos, funciones incorporadas y su relación con las operaciones de la teoría de conjuntos.
DataCamp Team's photo

DataCamp Team

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

Tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

Tutorial

Introducción a los disparadores SQL: Guía para desarrolladores

Aprende a utilizar los disparadores SQL para automatizar tareas, mantener la integridad de los datos y mejorar el rendimiento de la base de datos. Prueba ejemplos prácticos como los comandos CREATE, ALTER y DROP en MySQL y Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

Ver másVer más