Modelado físico relacional de bases de datos

El JOIN en SQL se utiliza para combinar filas de dos o más tablas en función de una relación entre columnas en estas tablas. Aquí se describen los tipos más comunes de JOIN y cómo funcionan:

Joins

INNER JOIN

  • Combina solo los registros que tienen coincidencias en ambas tablas.
  • Si no hay coincidencias, no se incluye el registro en los resultados.

Sintaxis:

1SELECT columnas
2FROM tabla1
3INNER JOIN tabla2
4ON tabla1.columna = tabla2.columna;

Ejemplo:

1SELECT estudiantes.nombre, cursos.nombre
2FROM estudiantes
3INNER JOIN cursos
4ON estudiantes.curso_id = cursos.id;

Este comando muestra los estudiantes y los cursos en los que están inscritos, solo si hay una coincidencia en curso_id.


LEFT JOIN (o LEFT OUTER JOIN)

  • Incluye todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha.
  • Si no hay coincidencias, los resultados de la tabla derecha serán NULL.

Sintaxis:

1SELECT columnas
2FROM tabla1
3LEFT JOIN tabla2
4ON tabla1.columna = tabla2.columna;

Ejemplo:

1SELECT estudiantes.nombre, cursos.nombre
2FROM estudiantes
3LEFT JOIN cursos
4ON estudiantes.curso_id = cursos.id;

Este comando muestra todos los estudiantes y, si están inscritos en un curso, también muestra el nombre del curso. Si no están inscritos, el nombre del curso será NULL.


RIGHT JOIN (o RIGHT OUTER JOIN)

  • Incluye todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda.
  • Si no hay coincidencias, los resultados de la tabla izquierda serán NULL.

Sintaxis:

1SELECT columnas
2FROM tabla1
3RIGHT JOIN tabla2
4ON tabla1.columna = tabla2.columna;

Ejemplo:

1SELECT estudiantes.nombre, cursos.nombre
2FROM estudiantes
3RIGHT JOIN cursos
4ON estudiantes.curso_id = cursos.id;

Este comando muestra todos los cursos y los estudiantes inscritos en ellos. Si un curso no tiene estudiantes inscritos, el nombre del estudiante será NULL.


FULL JOIN (o FULL OUTER JOIN)

  • Combina los registros de ambas tablas, incluyendo aquellos que no tienen coincidencias en la otra tabla.
  • Los resultados no coincidentes mostrarán NULL para las columnas de la tabla que no tiene el registro.

Sintaxis:

1--❌ No soporta directamente FULL JOIN.
2--🔁 Alternativa usando UNION de LEFT JOIN y RIGHT JOIN:
3SELECT columnas
4FROM tabla1
5LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna
6UNION
7SELECT columnas
8FROM tabla1
9RIGHT JOIN tabla2 ON tabla1.columna = tabla2.columna;

Ejemplo:

1--❌ MySQL no soporta FULL JOIN directamente. Debes simularlo usando UNION de LEFT JOIN y RIGHT JOIN:
2
3SELECT estudiantes.nombre, cursos.nombre
4FROM estudiantes
5LEFT JOIN cursos ON estudiantes.curso_id = cursos.id
6UNION
7SELECT estudiantes.nombre, cursos.nombre
8FROM estudiantes
9RIGHT JOIN cursos ON estudiantes.curso_id = cursos.id;

Este comando muestra todos los estudiantes y todos los cursos, incluyendo aquellos estudiantes que no están inscritos en ningún curso y los cursos que no tienen estudiantes inscritos.


Usos comunes:

  • INNER JOIN: Cuando necesitas solo los registros que coinciden en ambas tablas.
  • LEFT JOIN: Para obtener todos los registros de la tabla izquierda y los coincidentes de la derecha.
  • RIGHT JOIN: Similar al LEFT JOIN, pero enfocado en la tabla derecha.
  • FULL JOIN: Para obtener una combinación completa de ambas tablas, incluyendo registros no coincidentes.
  • Loading...