TALLER #2 - MYSQL
Base de Datos: Gestión de Calificaciones
Presentado por:
(Nombres completos de los integrantes del grupo)
Presentado a:
(Nombre del profesor)
Fecha de entrega:
25 de abril de 2025
Curso:
Base de Datos / MySQL
Índice
1. Modelo Entidad-Relación (ER)
2. Script de Creación de Base de Datos y Tablas
3. Insertar Datos en las Tablas
4. Consultas SQL
5. Capturas de Pantalla
1. Modelo Entidad-Relación (ER)
(Insertar diagrama aquí)
Descripción textual del Modelo ER:
- Un alumno se matricula en un curso.
- Un alumno tiene muchas notas.
- Un docente enseña varias materias.
- Una materia pertenece a un curso.
- Las notas registran la evaluación del alumno en cada materia y curso.
2. Script de Creación de Base de Datos y Tablas
CREATE DATABASE IF NOT EXISTS InstitutoCorpoPamplona;
USE InstitutoCorpoPamplona;
CREATE TABLE Docente (
id_d INT PRIMARY KEY,
nombre VARCHAR(50),
apellidos VARCHAR(50),
telefono VARCHAR(20),
correo VARCHAR(100)
);
CREATE TABLE Curso (
id_curso CHAR(3) PRIMARY KEY,
nombre VARCHAR(50)
);
CREATE TABLE Alumno (
id_a CHAR(2) PRIMARY KEY,
nombre VARCHAR(50),
apellidos VARCHAR(50),
f_nac YEAR,
sexo CHAR(1),
direccion VARCHAR(100),
telefono VARCHAR(20),
correo VARCHAR(100),
curso_id CHAR(3),
FOREIGN KEY (curso_id) REFERENCES Curso(id_curso)
);
CREATE TABLE Materia (
id_m INT PRIMARY KEY,
nombre VARCHAR(100),
id_d INT,
id_curso CHAR(3),
FOREIGN KEY (id_d) REFERENCES Docente(id_d),
FOREIGN KEY (id_curso) REFERENCES Curso(id_curso)
);
CREATE TABLE Notas (
id_a CHAR(2),
id_m INT,
id_curso CHAR(3),
nota1 DECIMAL(3,1),
nota2 DECIMAL(3,1),
nota3 DECIMAL(3,1),
PRIMARY KEY (id_a, id_m, id_curso),
FOREIGN KEY (id_a) REFERENCES Alumno(id_a),
FOREIGN KEY (id_m) REFERENCES Materia(id_m),
FOREIGN KEY (id_curso) REFERENCES Curso(id_curso)
);
3. Insertar Datos en las Tablas
(Insertar aquí todos los INSERT INTO de los datos)
4. Consultas SQL
1. 1. SELECT apellidos, nombre FROM Alumno ORDER BY apellidos ASC, nombre ASC;
2. 2. SELECT nombre, apellidos FROM Alumno WHERE telefono IS NULL;
3. 3. SELECT nombre, apellidos FROM Alumno WHERE f_nac = 1999;
4. 4. SELECT nombre, apellidos FROM Docente WHERE telefono IS NULL AND correo LIKE
'%@hotmail%';
5. 5. SELECT nombre FROM Materia WHERE id_curso = '004';
6. 6. SELECT DISTINCT a.nombre, a.apellidos FROM Alumno a JOIN Notas n ON a.id_a =
n.id_a JOIN Materia m ON n.id_m = m.id_m WHERE m.nombre LIKE '%Informática%'
AND a.sexo = 'F';
7. 7. SELECT nombre FROM Materia WHERE nombre LIKE '%Inteligencia artificial%';
8. 8. SELECT nombre, apellidos FROM Docente ORDER BY apellidos ASC, nombre ASC;
9. 9. SELECT nombre FROM Materia WHERE id_curso IN ('008', '009', '010');
10. 10. SELECT d.nombre, d.apellidos FROM Docente d JOIN Materia m ON d.id_d = m.id_d
WHERE m.nombre = 'Sistemas operativos';
11. 11. SELECT a.nombre, a.apellidos FROM Alumno a JOIN Notas n ON a.id_a = n.id_a
WHERE nota1 > 3.5;
12. 12. SELECT c.nombre AS grado, COUNT(m.id_m) AS cantidad_materias FROM Curso c
LEFT JOIN Materia m ON c.id_curso = m.id_curso GROUP BY c.nombre ORDER BY
cantidad_materias DESC;
13. 13. SELECT c.nombre AS grado, COUNT(m.id_m) AS cantidad_materias FROM Curso c
LEFT JOIN Materia m ON c.id_curso = m.id_curso GROUP BY c.nombre HAVING
COUNT(m.id_m) > 2;
14. 14. SELECT a.nombre, m.nombre AS materia, ROUND((n.nota1 + n.nota2 + n.nota3)/3,2)
AS promedio FROM Alumno a JOIN Notas n ON a.id_a = n.id_a JOIN Materia m ON n.id_m
= m.id_m ORDER BY promedio DESC;
15. 15. SELECT c.nombre AS curso, COUNT(DISTINCT n.id_a) AS cantidad_alumnos FROM
Curso c JOIN Notas n ON c.id_curso = n.id_curso GROUP BY c.nombre;
16. 16. SELECT d.id_d, d.nombre, d.apellidos, COUNT(m.id_m) AS cantidad_materias FROM
Docente d LEFT JOIN Materia m ON d.id_d = m.id_d GROUP BY d.id_d, d.nombre,
d.apellidos ORDER BY d.nombre ASC;
17. 17. SELECT * FROM Alumno ORDER BY f_nac DESC LIMIT 1;
5. Capturas de Pantalla
- Captura de la creación de la base de datos.
- Captura de la creación de cada tabla.
- Captura de los datos insertados.
- Captura de la ejecución de cada consulta.