S3 · Ejercicios de crear y modificar¶
Parte de la base de datos del instituto, que se restablece en cada ejercicio (lo que cambies en uno no afecta al siguiente). Al final de cada solución hay un SELECT de comprobación que muestra el estado final.
Ejercicio S3.1¶
Crear una tabla. Crea la tabla clubes con: id (clave primaria numerada), nombre (obligatorio y único), cuota (decimal, obligatorio, 0 por defecto y nunca negativa) y id_profesor (clave foránea opcional a profesores). Después, lista las tablas de la base de datos.
Resultado esperado:
| tabla |
|---|
| alumnos |
| asignaturas |
| clubes |
| grupos |
| notas |
| profesores |
| … |
7 filas (se muestran 6)
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
CREATE TABLE clubes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL UNIQUE,
cuota REAL NOT NULL DEFAULT 0 CHECK (cuota >= 0),
id_profesor INTEGER REFERENCES profesores(id)
-- ... (resto de la solución bloqueado)Ejercicio S3.2¶
Una alumna nueva. Inserta a Paula Rey, nacida el 5 de mayo de 2005, de Cádiz, en el grupo 1. Indica las columnas. Comprueba que se ha creado.
Resultado esperado:
| id | nombre | apellido | id_grupo |
|---|---|---|---|
| 15 | Paula | Rey | 1 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
INSERT INTO alumnos (nombre, apellido, nacimiento, ciudad, id_grupo)
VALUES ('Paula', 'Rey', '2005-05-05', 'Cádiz', 1);
SELECT id, nombre, apellido, id_grupo FROM alumnos WHERE nombre = 'Paula';
-- ... (resto de la solución bloqueado)Ejercicio S3.3¶
Varias a la vez. Inserta en una sola sentencia dos asignaturas nuevas: Robótica (60 horas, sin profesor) y Diseño de Interfaces (100 horas, profesor 3). Muestra las asignaturas con id mayor que 6.
Resultado esperado:
| id | nombre | horas | id_profesor |
|---|---|---|---|
| 7 | Robótica | 60 | NULL |
| 8 | Diseño de Interfaces | 100 | 3 |
2 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
INSERT INTO asignaturas (nombre, horas, id_profesor) VALUES
('Robótica', 60, NULL),
('Diseño de Interfaces', 100, 3);
SELECT * FROM asignaturas WHERE id > 6;
-- ... (resto de la solución bloqueado)Ejercicio S3.4¶
Subir notas. Suma medio punto a todas las notas de la convocatoria 2 de la asignatura 4 (Lenguajes de Marcas), sin que ninguna pase de 10. Comprueba el resultado.
Resultado esperado:
| id_alumno | nota |
|---|---|
| 1 | 4.5 |
| 10 | 6.0 |
2 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
UPDATE notas SET nota = MIN(nota + 0.5, 10) WHERE id_asignatura = 4 AND convocatoria = 2;
SELECT id_alumno, nota FROM notas WHERE id_asignatura = 4 AND convocatoria = 2;
-- ... (resto de la solución bloqueado)Ejercicio S3.5¶
Asignar un profesor. La asignatura Inglés Técnico no tiene profesor. Asígnale el profesor 1 y comprueba el cambio.
Resultado esperado:
| nombre | id_profesor |
|---|---|
| Inglés Técnico | 1 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
UPDATE asignaturas SET id_profesor = 1 WHERE nombre = 'Inglés Técnico';
SELECT nombre, id_profesor FROM asignaturas WHERE nombre = 'Inglés Técnico';
-- ... (resto de la solución bloqueado)Ejercicio S3.6¶
Asignar un grupo. La alumna Irene Lara no tiene grupo. Ponla en el grupo 3 y comprueba el cambio.
Resultado esperado:
| nombre | apellido | id_grupo |
|---|---|---|
| Irene | Lara | 3 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
UPDATE alumnos SET id_grupo = 3 WHERE nombre = 'Irene' AND apellido = 'Lara';
SELECT nombre, apellido, id_grupo FROM alumnos WHERE nombre = 'Irene';
-- ... (resto de la solución bloqueado)Ejercicio S3.7¶
Borrar notas. Borra todas las notas de la convocatoria 2 que sean menores de 5. Muestra cuántas notas quedan.
Resultado esperado:
| notas_restantes |
|---|
| 54 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
DELETE FROM notas WHERE convocatoria = 2 AND nota < 5;
SELECT COUNT(*) AS notas_restantes FROM notas;
-- ... (resto de la solución bloqueado)Ejercicio S3.8¶
Borrar un alumno con sus notas. Borra al alumno Álex Roca (id 14). Tiene notas, así que la base de datos no te dejará borrarlo directamente: piensa en qué orden hacerlo. Comprueba que ya no está.
Resultado esperado:
| alumnos_restantes |
|---|
| 13 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
DELETE FROM notas WHERE id_alumno = 14;
DELETE FROM alumnos WHERE id = 14;
SELECT COUNT(*) AS alumnos_restantes FROM alumnos;
-- ... (resto de la solución bloqueado)Ejercicio S3.9¶
Añadir una columna. Añade a alumnos la columna email (texto) y rellénala para todos los alumnos con alumno seguido de su id y @instituto.es (por ejemplo, alumno1@instituto.es). Muestra los 3 primeros.
Resultado esperado:
| id | nombre | |
|---|---|---|
| 1 | Ana | alumno1@instituto.es |
| 2 | Luis | alumno2@instituto.es |
| 3 | Marta | alumno3@instituto.es |
3 filas
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
ALTER TABLE alumnos ADD COLUMN email TEXT;
UPDATE alumnos SET email = 'alumno' || id || '@instituto.es';
SELECT id, nombre, email FROM alumnos ORDER BY id LIMIT 3;
-- ... (resto de la solución bloqueado)Ejercicio S3.10¶
Copiar el resultado de una consulta. Crea la tabla suspensos con las columnas id_alumno, id_asignatura y nota de las notas de la convocatoria 1 menores de 5. Muestra cuántas filas tiene.
Resultado esperado:
| filas |
|---|
| 11 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
CREATE TABLE suspensos AS
SELECT id_alumno, id_asignatura, nota FROM notas WHERE convocatoria = 1 AND nota < 5;
SELECT COUNT(*) AS filas FROM suspensos;
-- ... (resto de la solución bloqueado)Ejercicio S3.11¶
Borrado en cascada. Crea la tabla faltas con id (clave primaria numerada), id_alumno (clave foránea a alumnos con borrado en cascada) y fecha. Inserta dos faltas de la alumna Irene Lara (id 13: 2025-10-01 y 2025-10-02), bórrala y comprueba que sus faltas han desaparecido.
Resultado esperado:
| faltas_restantes |
|---|
| 0 |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
CREATE TABLE faltas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_alumno INTEGER NOT NULL REFERENCES alumnos(id) ON DELETE CASCADE,
fecha TEXT NOT NULL
);
-- ... (resto de la solución bloqueado)Ejercicio S3.12¶
⭐ Reto: duplicar con INSERT ... SELECT. Crea una asignatura nueva llamada Inglés Técnico II con las mismas horas y el mismo profesor que Inglés Técnico, sin escribir esos valores a mano (usa INSERT ... SELECT). Muestra las asignaturas con id mayor que 6.
Resultado esperado:
| id | nombre | horas | id_profesor |
|---|---|---|---|
| 7 | Inglés Técnico II | 60 | NULL |
1 fila
Solución modelo (bloqueada)
🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:
INSERT INTO asignaturas (nombre, horas, id_profesor)
SELECT nombre || ' II', horas, id_profesor FROM asignaturas WHERE nombre = 'Inglés Técnico';
SELECT * FROM asignaturas WHERE id > 6;
-- ... (resto de la solución bloqueado)