Ejercicio 3

Creación de Tablas

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);

 

Consultas

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
);