¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?

Clase 24 de 36Curso de Bases de Datos con SQL - Deprecado

Contenido del curso

Resumen

Dominar los distintos tipos de joins en SQL directamente desde la consola es una habilidad fundamental para cualquier persona que trabaje con bases de datos relacionales. Aquí se aborda paso a paso cómo recrear una base de datos con tablas relacionadas, ejecutar consultas con inner join, right join, left join y full outer join, y aplicar buenas prácticas de nomenclatura que faciliten el mantenimiento del código.

¿Cómo preparar la base de datos para practicar joins?

Antes de ejecutar cualquier join, es necesario construir el escenario completo. Esto implica crear la base de datos, definir las tablas, insertar registros y asignar los tipos de datos correctos a cada columna.

La tabla productos contiene cuatro columnas [0:18]:

  • ID: clave primaria.
  • Nombre: texto con el nombre del producto.
  • Marca: referencia a la tabla de marcas.
  • Precio: valor numérico.

La tabla marcas es más sencilla, con solo dos columnas [0:42]:

  • ID: clave primaria.
  • Nombre: nombre de la marca.

Un punto importante es identificar la clave foránea (foreign key) dentro del esquema. En la tabla productos, el campo marca_id actúa como foreign key que referencia el id de la tabla marcas [0:52]. Esta relación es la que permite conectar ambas tablas mediante los joins.

¿Cómo se escribe un inner join en consola?

La estructura parte de la sentencia tradicional: SELECT * FROM productos. La diferencia al usar un join es que, después del nombre de la primera tabla, se agrega la palabra reservada del tipo de join seguida de la segunda tabla [1:10].

Para un inner join la sintaxis es:

sql SELECT * FROM productos INNER JOIN marcas ON productos.marca_id = marcas.id;

La cláusula ON especifica el campo clave por el cual se relacionan ambas tablas [1:25]. Normalmente se usa la clave primaria, aunque dependiendo del requerimiento podría ser otro campo.

Al ejecutar esta consulta, el resultado muestra toda la información de ambas tablas donde existe coincidencia entre productos.marca_id y marcas.id [1:45].

¿Cómo usar alias para simplificar las consultas?

Es posible renombrar las tablas mediante alias, de forma similar a como se renombran columnas en operaciones aritméticas. La palabra reservada AS es opcional; la consola interpreta el alias aunque no se escriba [2:05].

sql SELECT m.id, m.nombre FROM productos p INNER JOIN marcas m ON p.marca_id = m.id;

Un detalle crucial: cuando se asignan alias, toda la consulta debe usar esos nuevos nombres. Si en la cláusula ON se sigue escribiendo productos en lugar de p, el motor puede arrojar un error indicando que no reconoce la referencia original [2:30].

¿Cómo cambiar entre right, left y full outer join?

Una vez que la estructura del inner join funciona, cambiar a otro tipo de join es tan sencillo como reemplazar la palabra reservada [2:55]:

  • Right join: devuelve todos los registros de la tabla derecha y los coincidentes de la izquierda.
  • Left join: devuelve todos los registros de la tabla izquierda y los coincidentes de la derecha.
  • Full outer join: combina ambos lados, mostrando todos los registros aunque no haya coincidencia.

sql -- Ejemplo con left join SELECT m.id, m.nombre FROM productos p LEFT JOIN marcas m ON p.marca_id = m.id;

Es importante notar que algunos motores de bases de datos no soportan FULL OUTER JOIN de forma nativa, lo que puede generar errores en consola [3:10]. Investigar la sintaxis específica del motor que se utiliza es parte del reto propuesto.

¿Por qué importan las buenas prácticas en los alias?

Renombrar tablas con una sola letra como p o m puede parecer cómodo en consultas cortas, pero no es una buena práctica [3:45]. En escenarios reales, como un procedimiento almacenado extenso, encontrarse con alias como p, a o 1 obliga a retroceder constantemente para entender a qué tabla hace referencia cada uno.

El alias debe ser descriptivo y comprensible a primera vista. Esto mejora la calidad del código, acelera el soporte y facilita el trabajo colaborativo entre ingenieros de datos [4:00].

Si encontraste algún error al ejecutar el full outer join o descubriste la sintaxis del cross join, comparte tus resultados en los comentarios.

      ¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?