Para esta base de datos se utilizará un base de datos llamada Instituto. Tendrá 3 tablas, Estudiantes, Cursos e Inscripciones.
CREATE DATABASE instituto;
USE instituto;
CREATE TABLE estudiantes (
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
edad INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE cursos (
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE inscripciones (
id INT NOT NULL AUTO_INCREMENT,
estudiante_id INT NOT NULL,
curso_id INT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT fk_estudiante_id FOREIGN KEY (estudiante_id) REFERENCES estudiantes (id),
CONSTRAINT fk_curso_id FOREIGN KEY (curso_id) REFERENCES cursos (id)
);
Insertar los Datos
-- Insertar estudiantes
INSERT INTO estudiantes (nombre, edad) VALUES
('Juan', 18),
('Maria', 21),
('Pedro', 20),
('Ana', 19),
('Carlos', 22);
-- Insertar cursos
INSERT INTO cursos (nombre) VALUES
('Matemáticas'),
('Física'),
('Química'),
('Historia'),
('Literatura');
-- Insertar inscripciones
INSERT INTO inscripciones (estudiante_id, curso_id) VALUES
(1, 1),
(2, 2),
(3, 1),
(4, 3),
(5, 5);
Obtener el nombre de los estudiantes que están inscritos en el curso de Matemáticas.
SELECT estudiantes.nombre
FROM estudiantes, inscripciones
WHERE estudiantes.id = inscripciones.estudiante_id
AND inscripciones.curso_id = (SELECT id FROM cursos WHERE nombre = 'Matemáticas');
SELECT nombre
FROM estudiantes
WHERE id IN (
SELECT estudiante_id
FROM inscripciones
WHERE curso_id = (
SELECT id
FROM cursos
WHERE nombre = 'Matemáticas'
)
);
Obtener el nombre de los cursos que tienen más de 3 estudiantes inscritos.
SELECT cursos.nombre
FROM cursos
JOIN inscripciones ON cursos.id = inscripciones.curso_id
GROUP BY cursos.nombre
HAVING COUNT(*) > 3;
SELECT nombre
FROM cursos
WHERE id IN (
SELECT curso_id
FROM inscripciones
GROUP BY curso_id
HAVING COUNT(*) > 3
);