Comprendiendo los JOINs en MySQL: INNER, LEFT OUTER y RIGHT OUTER

Los JOINs son una parte fundamental de SQL y se utilizan para combinar filas de dos o más tablas basadas en una condición relacionada entre ellas. En este artículo, exploraremos los tres tipos principales de JOINs en MySQL: INNER JOIN, LEFT OUTER JOIN, y RIGHT OUTER JOIN. Nos centraremos en la teoría detrás de cada tipo de JOIN y proporcionaremos ejemplos para ilustrar su uso.

Teoría de los JOINs en MySQL

1. INNER JOIN

El INNER JOIN devuelve filas cuando hay al menos una coincidencia en ambas tablas. Si no hay coincidencia, las filas no se incluyen en el resultado. Es el tipo de JOIN más común y se utiliza cuando solo se necesitan las filas que tienen datos correspondientes en ambas tablas.

Sintaxis:

SELECT columnas
FROM tabla1
INNER JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;

2. LEFT OUTER JOIN

El LEFT OUTER JOIN devuelve todas las filas de la tabla izquierda (tabla1), y las filas coincidentes de la tabla derecha (tabla2). Si no hay coincidencia, las filas de la tabla derecha serán NULL.

Sintaxis:

SELECT columnas
FROM tabla1
LEFT JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;

3. RIGHT OUTER JOIN

El RIGHT OUTER JOIN es lo opuesto del LEFT JOIN. Devuelve todas las filas de la tabla derecha (tabla2), y las filas coincidentes de la tabla izquierda (tabla1). Si no hay coincidencia, las filas de la tabla izquierda serán NULL.

Sintaxis:

SELECT columnas
FROM tabla1
RIGHT JOIN tabla2 ON tabla1.columna_comun = tabla2.columna_comun;

Ejemplos Prácticos

Para ilustrar estos conceptos, utilizaremos dos tablas de ejemplo: empleados y departamentos.

Tablas de ejemplo:

-- Tabla empleados
CREATE TABLE empleados (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50),
    departamento_id INT
);

-- Tabla departamentos
CREATE TABLE departamentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(50)
);

-- Insertando datos de ejemplo
INSERT INTO empleados (nombre, departamento_id) VALUES
('Juan', 1),
('Maria', 2),
('Pedro', 1),
('Ana', NULL);

INSERT INTO departamentos (nombre) VALUES
('Recursos Humanos'),
('Ventas'),
('Marketing');

Ejemplo de INNER JOIN

El INNER JOIN selecciona solo las filas que tienen coincidencias en ambas tablas.

SELECT empleados.nombre, departamentos.nombre AS nombre_departamento
FROM empleados
INNER JOIN departamentos ON empleados.departamento_id = departamentos.id;

Resultado:

nombrenombre_departamento
JuanRecursos Humanos
PedroRecursos Humanos
MariaVentas

En este caso, el INNER JOIN solo devuelve los empleados que tienen un departamento asignado.

Ejemplo de LEFT OUTER JOIN

El LEFT OUTER JOIN devuelve todas las filas de la tabla izquierda, y las filas coincidentes de la tabla derecha. Si no hay coincidencia, las filas de la tabla derecha serán NULL.

SELECT empleados.nombre, departamentos.nombre AS nombre_departamento
FROM empleados
LEFT JOIN departamentos ON empleados.departamento_id = departamentos.id;

Resultado:

nombrenombre_departamento
JuanRecursos Humanos
MariaVentas
PedroRecursos Humanos
AnaNULL

El LEFT OUTER JOIN devuelve todos los empleados, incluso aquellos sin un departamento asignado.

Ejemplo de RIGHT OUTER JOIN

El RIGHT OUTER JOIN devuelve todas las filas de la tabla derecha, y las filas coincidentes de la tabla izquierda. Si no hay coincidencia, las filas de la tabla izquierda serán NULL.

SELECT empleados.nombre, departamentos.nombre AS nombre_departamento
FROM empleados
RIGHT JOIN departamentos ON empleados.departamento_id = departamentos.id;

Resultado:

nombrenombre_departamento
JuanRecursos Humanos
PedroRecursos Humanos
MariaVentas
NULLMarketing

El RIGHT OUTER JOIN devuelve todos los departamentos, incluyendo aquellos sin empleados asignados.

Conclusión

Comprender y utilizar correctamente los JOINs en MySQL es esencial para manipular y consultar datos de manera efectiva. Los INNER JOINs se utilizan cuando solo se necesitan filas con datos correspondientes en ambas tablas, mientras que los LEFT OUTER JOINs y RIGHT OUTER JOINs se utilizan para incluir todas las filas de una tabla, independientemente de si hay coincidencias en la otra tabla. Al dominar estos tipos de JOINs, puedes realizar consultas más complejas y obtener información más detallada de tus bases de datos.

person encoding in laptop
Photo by Lukas on Pexels.com

Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad