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:
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
NULLpara 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 alLEFT JOIN, pero enfocado en la tabla derecha.FULL JOIN: Para obtener una combinación completa de ambas tablas, incluyendo registros no coincidentes.
- Loading...