Lenguaje de Consulta de Datos (DQL) 2/4
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:
1. 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.
2. 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.
3. 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:
Ejemplo:
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.
4. 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:
Ejemplo:
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.
5. 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.
Resumen del tema
Conceptos clave #
- Unión de Tablas (JOIN): combina registros de dos o más tablas en función de una condición lógica (habitualmente clave foránea = clave primaria).
INNER JOIN: devuelve exclusivamente las filas que tienen coincidencia exacta en ambas tablas.LEFT JOIN(oLEFT OUTER JOIN): devuelve todas las filas de la tabla izquierda y las coincidentes de la derecha; si no hay correspondencia, rellena conNULL.RIGHT JOIN(oRIGHT OUTER JOIN): devuelve todas las filas de la tabla derecha y las coincidentes de la izquierda (rellenando conNULLen ausencias).FULL JOIN(oFULL OUTER JOIN): incluye todas las filas de ambas tablas, asociando cuando hay coincidencia o colocandoNULLcuando falta en alguno de los lados.- Compatibilidad: PostgreSQL, SQLite 3.39+, Oracle y SQL Server admiten
FULL OUTER JOIN; MySQL requiere emularlo, por ejemplo combinando uniones externas conUNION.
Qué debes recordar #
Usa INNER JOIN para obtener solo coincidencias estrictas y LEFT/RIGHT/FULL OUTER JOIN cuando necesites conservar registros aunque no tengan correspondencia en la otra tabla.