▷ Uniones entre tablas 【 INNER JOIN, LEFT JOIN, RIGHT JOIN 】 en MySQL
Guía Completa sobre INNER JOIN, LEFT JOIN y RIGHT JOIN en MySQL
Cuando trabajamos con bases de datos relacionales, es común que la información esté distribuida en varias tablas. Para combinarlas y obtener datos significativos, utilizamos JOINs en SQL. En este artículo, te explicaré de manera clara y con ejemplos prácticos cómo funcionan los INNER JOIN, LEFT JOIN y RIGHT JOIN.
✨ 1. Introducción a los JOINs
Un JOIN en SQL se usa para combinar filas de dos o más tablas basadas en una condición común. Dependiendo del tipo de JOIN, podemos incluir o excluir ciertos datos según si tienen coincidencias en ambas tablas.
Para ilustrar estos conceptos, usaremos un ejemplo de una base de datos de estudiantes y sus inscripciones a cursos.
📝 2. Creación de las Tablas
Vamos a definir dos tablas:
Estudiantes (
estudiantes
):id_estudiante
(PK) - Identificador único del estudiante.nombre
- Nombre del estudiante.correo
- Correo del estudiante.
Inscripciones (
inscripciones
):id_inscripcion
(PK) - Identificador único de la inscripción.id_estudiante
(FK) - Clave foránea que hace referencia a un estudiante.curso
- Nombre del curso en el que está inscrito.
Creación de las Tablas en SQL
CREATE TABLE estudiantes (
id_estudiante INT PRIMARY KEY,
nombre VARCHAR(100),
correo VARCHAR(100) UNIQUE
);
CREATE TABLE inscripciones (
id_inscripcion INT PRIMARY KEY,
id_estudiante INT,
curso VARCHAR(100),
FOREIGN KEY (id_estudiante)
REFERENCES estudiantes(id_estudiante)
);
📚 3. Inserción de Datos
INSERT INTO estudiantes (id_estudiante, nombre, correo) VALUES
(1, 'Ana Gómez', 'ana@gmail.com'),
(2, 'Juan Pérez', 'juan@gmail.com'),
(3, 'Carlos López', 'carlos@gmail.com'),
(4, 'Pedro Méndez', 'pedro@gmail.com'); -- Estudiante sin inscripción
INSERT INTO inscripciones (id_inscripcion, id_estudiante, curso) VALUES
(1, 1, 'Matemáticas'),
(2, 2, 'Física'),
(3, 2, 'Química'),
(4, 3, 'Historia'),
(5, NULL, 'Biología'); -- Inscripción sin estudiante asociado
🔍 4. Tipos de JOINs en SQL
🌟 INNER JOIN: Coincidencias en ambas tablas
El INNER JOIN devuelve únicamente los registros que tienen coincidencias en ambas tablas.
SELECT e.id_estudiante, e.nombre, i.curso
FROM estudiantes e
INNER JOIN inscripciones i ON e.id_estudiante = i.id_estudiante;
id_estudiante | nombre | curso |
---|---|---|
1 | Ana Gómez | Matemáticas |
2 | Juan Pérez | Física |
2 | Juan Pérez | Química |
3 | Carlos López | Historia |
Excluye a Pedro porque no tiene cursos.
Excluye Biología porque no tiene un estudiante asignado.
🔎 RIGHT JOIN: Todas las inscripciones, aunque no tengan estudiante
El RIGHT JOIN devuelve todos los registros de la tabla derecha (inscripciones
), y si no tienen coincidencia en la izquierda (estudiantes
), muestra NULL
.
SELECT e.id_estudiante, e.nombre, i.curso
FROM estudiantes e
RIGHT JOIN inscripciones i ON e.id_estudiante = i.id_estudiante;
RIGHT JOIN: Todas las inscripciones (aunque no tengan estudiante)
id_estudiante | nombre | curso |
---|---|---|
1 | Ana Gómez | Matemáticas |
2 | Juan Pérez | Física |
2 | Juan Pérez | Química |
3 | Carlos López | Historia |
NULL | NULL | Biología |
Incluye Biología, aunque no tenga estudiante asociado.
Excluye a Pedro porque no tiene inscripciones.
🔄 LEFT JOIN: Todos los estudiantes, aunque no tengan inscripción
El LEFT JOIN devuelve todos los registros de la tabla izquierda (estudiantes
), y si no tienen coincidencia en la derecha (inscripciones
), muestra NULL
.
SELECT e.id_estudiante, e.nombre, i.curso
FROM estudiantes e
LEFT JOIN inscripciones i ON e.id_estudiante = i.id_estudiante;
Salida esperada:
LEFT JOIN: Todos los estudiantes (aunque no tengan inscripción)
id_estudiante | nombre | curso |
---|---|---|
1 | Ana Gómez | Matemáticas |
2 | Juan Pérez | Física |
2 | Juan Pérez | Química |
3 | Carlos López | Historia |
4 | Pedro Méndez | NULL |
Incluye a Pedro aunque no tiene inscripciones.
Excluye Biología, porque no tiene estudiante asociado.
🔖 5. Comparación de JOINs
Comparación de JOINs en SQL
Tipo de JOIN | Incluye estudiantes sin curso | Incluye cursos sin estudiante |
---|---|---|
INNER JOIN | ❌ No | ❌ No |
LEFT JOIN | ✅ Sí | ❌ No |
RIGHT JOIN | ❌ No | ✅ Sí |
🌟 Conclusión
Los JOINs son fundamentales para manejar bases de datos relacionales.
Usa INNER JOIN si solo quieres coincidencias.
Usa LEFT JOIN si necesitas todos los registros de la tabla izquierda.
Usa RIGHT JOIN si necesitas todos los registros de la tabla derecha.
¡Espero que esta guía te ayude a dominar los JOINs en SQL! ¿Tienes dudas o necesitas más ejemplos? Déjamelo en los comentarios. 🚀
En el siguiente video te explico como usar correctamente los JOINs en MySQL.
No te olvides darle LIKE y SUSCRIBIRTE al blog y a mi canal si te gustó el video. Si gustas realizar una DONACIÓN para ayudarme a mejorar el canal y mi contenido, puedes hacerlo mediante el botón ❤$GRACIAS ubicado en la parte posterior del video en YouTube o visitando el enlace https://linktr.ee/ezavalar y haciendo clic en el botón Donaciones.
Comentarios
Publicar un comentario
Cuéntame que opinas acerca del artículo. Recuerda ser respetuoso si quieres que se publique tu comentario 😊