DQL

Teoría de Conjuntos en SQL

Antes de realizar Consultas Multitabla, primero debemos entender la base matemática que las sostiene: la Teoría de Conjuntos. En SQL, las tablas son consideradas “conjuntos” de registros, y las operaciones que realizamos buscan combinar o comparar esos conjuntos.

En el modelo relacional, una tabla no es más que un conjunto de tuplas (filas). Cuando hablamos de teoría de conjuntos aplicada a Data Query Language (DQL), nos referimos principalmente a tres operaciones fundamentales que se realizan de manera vertical (combinando filas de resultados similares):

A. Unión (UNION)

Combina los resultados de dos consultas en un único conjunto, eliminando duplicados.

  • UNION ALL: Hace lo mismo pero mantiene los duplicados (es más eficiente porque el motor no tiene que comparar filas para borrarlas).

B. Intersección (INTERSECT)

Devuelve únicamente los registros que existen en ambos conjuntos. Es el equivalente lógico al “AND”.

C. Diferencia (EXCEPT / MINUS)

Devuelve los registros que están en el primer conjunto pero no en el segundo.

Para una revisión rápida de las propiedades de la Unión y la Intersección de conjuntos (conmutatividad, asociatividad, distributividad, leyes de De Morgan, etc.) revisar el post “Lógica Difusa: Introducción, Conjuntos Certeros vs Difusos” en la sección “Propiedades de las Operaciones Difusas

Para que podamos aplicar UNION, INTERSECT o EXCEPT, las consultas deben cumplir dos condiciones estrictas:

  1. Mismo número de columnas: Ambas sentencias SELECT deben devolver la misma cantidad de campos.
  2. Tipos de datos compatibles: La primera columna de la Consulta A debe ser del mismo tipo (o compatible) que la primera de la Consulta B, y así sucesivamente.

La sintaxis general es:

SELECT [Consulta A]
(UNION|INTERSECT|EXCEPT)
SELECT [Consulta B]
[(UNION|INTERSECT|EXCEPT)
SELECT [Consulta C]...];

-- UNION
SELECT [Consulta A]
UNION
SELECT [Consulta B];

-- INTERSECCION
SELECT [Consulta A]
INTERSECT
SELECT [Consulta B];

-- DIFERENCIA
SELECT [Consulta A]
EXCEPT
SELECT [Consulta B];

Es importante destacar que la mayoría de las personas se confunden en esta sección, y es vital aclararlo:

  • Operaciones de Conjuntos (UNION, etc.): Combinan filas de tablas con estructuras similares (crecimiento vertical).
  • Uniones (JOINS): Combinan columnas de tablas diferentes basándose en una relación (crecimiento horizontal).

Para entender los Joins, se emplean los mismos diagramas de Venn de la teoría de conjuntos, pero en lugar de comparar conjuntos de tuplas, se comparan Llaves Primarias (PK) y Llaves Foráneas (FK).