Servidor disponible solo los jueves de 10:30 a 12:30 y los viernes de 10:00 a 13:00 (hora de Madrid); fuera de ese horario está apagado. Fuera del horario, usa la documentación local del material que te descargaste (el README.md de cada carpeta).
G214 · CUNEF
Inicio / tema3 / 03.03-sqlestudiantes

Tema 3 · 3 · SQL con la tabla de estudiantes (carga, CRUD, administración y ejercicios 1 y 2)

Presentación del Tema 3: «CREATE = INSERT», «READ = SELECT» y «UPDATE»; «Carga de BD en SGBD», «Manipulación de datos en SGBD», «Administración de bases de datos desde Adminer» y «Administración de tablas desde Adminer» y «Ejercicio 1» y «Ejercicio 2». Duración: 10 a 15 minutos de carga y comprobaciones, más lo que dediques a los ejercicios. Coste: ninguno propio (usas la RDS y el Adminer que ya tienes encendidos).

Qué vas a hacer

Vas a cargar en tu RDS la base universidad (tabla estudiantes, 48 alumnos) con Adminer y a hacer sobre ella las prácticas de SQL de las diapositivas: altas, consultas, cambios y bajas, administración de bases y tablas, y los ejercicios 1, 2 y 2B. Esta guía no resuelve los ejercicios: explica cómo montar el entorno y cómo comprobar que tus resultados son los esperados (cada bloque de ejercicios.txt trae el resultado esperado en comentarios), pero no las sentencias que debes escribir.

tema3_estudiantes.sql ──(SQL command / Import en Adminer)──> RDS: base universidad, tabla estudiantes (48 filas)
ejercicios.txt ────────(copiar y pegar bloque a bloque)────> prácticas CRUD, administración, ejercicios 1, 2 y 2B

Qué se crea en AWS: nada. Todo ocurre dentro de la RDS que ya tienes (bases universidad, y temporalmente prueba).

Qué contiene esta carpeta

Fichero Para qué sirve En qué paso se usa
tema3_estudiantes.sql Crea la base universidad y la tabla estudiantes (columnas id, nombre, apellidos, grupo, num_convocatoria y derecho_a_examen) con 48 registros Paso 1
ejercicios.txt SQL para copiar y pegar si los bloques de las diapositivas dan error, con el resultado esperado en comentarios: CRUD, administración, columna nota, ejercicios 1, 2 y 2B. Su primera línea explica que PowerPoint mete caracteres no imprimibles Pasos 3 a 7
README.md Esta guía Siempre

Antes de empezar

Cómo llevar los ficheros a donde toque

No hace falta CloudShell. Abre cada fichero en tu PC con un editor de texto, copia el contenido y pégalo en Adminer (SQL command), o súbelo con Import (para .sql). Los ficheros no se ejecutan en tu PC.

Paso a paso

Paso 1. Cargar tema3_estudiantes.sql.

  1. En el menú de la izquierda de Adminer, pulsa SQL command.
  2. Abre tema3_estudiantes.sql en tu PC, copia todo el contenido, pégalo en el cuadro y pulsa Execute. Alternativa: Import > elige el fichero > Execute.

El fichero crea la base universidad (si no existe), la tabla estudiantes e inserta los registros.

Qué verás: la ejecución termina sin mensajes de error en rojo. Comprueba que está cargado: abre el desplegable de bases de datos, elige universidad (en minúscula), pulsa la tabla estudiantes y luego select data: deben salir 48 registros. O lanza:

USE universidad;
SELECT COUNT(*) FROM estudiantes;

Debe devolver 48. Si lo ejecutas dos veces, el fichero no borra nada antes de insertar, así que tendrás los registros duplicados (96, con ids nuevos). Si quieres volver a empezar de cero, elimina la base y vuelve a cargar el fichero (perderás los cambios que hayas hecho): DROP DATABASE universidad;.

Paso 2. Cómo usar ejercicios.txt. Está en el orden de las diapositivas. Pega los bloques de uno en uno en SQL command y pulsa Execute; lee qué hace cada sentencia antes de lanzarla. Todas las sentencias terminan en ; (si pegas dos sentencias seguidas sin ; entre ellas, MariaDB las lee como una sola y da Error 1064). Las líneas que empiezan por -- o # son comentarios y se pueden pegar. Cada bloque trae en comentarios el resultado esperado: cifras que debes obtener. Si tras pegar desde la diapositiva sale un error raro, copia el bloque de este fichero en su lugar. Si te saltas un ejercicio, salta también lo que depende de él.

Paso 3. Ejemplos CRUD. En Adminer puedes editar filas con la interfaz (select data > edit) o lanzar SQL. El SQL de apoyo está en el bloque Ejemplos CRUD de ejercicios.txt (INSERT, SELECT, UPDATE, DELETE).

Qué verás (según el propio fichero): 49 filas tras el INSERT (Ana tiene el id 49), 4 con apellido Ruiz y, al final, 48 filas (A 14, B 15, C 19). Si el INSERT con id 70 te dio curiosidad: dejaría el AUTO_INCREMENT en 71 (los ids siguientes serían 71, 72...); no hace falta para ningún ejercicio.

Paso 4. Administración de bases de datos y tablas. Bloque Administracion de ejercicios.txt (en Adminer, SQL command): crea y borra una base de prueba sin tocar universidad, y añade y quita una columna y una tabla de prueba.

Qué verás: en la lista de bases de datos, la columna Collation de prueba pasa de latin1_swedish_ci (el valor por defecto de la RDS) a utf8mb4_general_ci; SELECT COUNT(*), COUNT(correo) FROM estudiantes; da 48 y 0 (correo es NULL en todas las filas); al terminar, estudiantes sigue con 48 filas y sus 6 columnas (id, nombre, apellidos, grupo, num_convocatoria, derecho_a_examen). Estas sentencias no se pueden deshacer con ROLLBACK. No borres universidad: la usan los ejercicios siguientes.

Paso 5. Columna nota y ejemplos de CRUD. Los ejemplos de INSERT, SELECT y UPDATE de la presentación (apartados «CREATE = INSERT», «READ = SELECT» y «UPDATE») usan una columna nota que no existe en tema3_estudiantes.sql: sin ella dan Error (1054): Unknown column 'nota'. La crea el ALTER TABLE de la presentación (ALTER TABLE estudiantes ADD nota int(2) NULL DEFAULT 5;). Ejecútalo primero, una sola vez (si lo repites da 1060 Duplicate column name, inofensivo). Está en el bloque Columna nota de ejercicios.txt.

Ojo: esos tres ejemplos cambian datos de verdad. Si los ejecutas tal cual, el INSERT deja una fila más (Elena Fernández) y el UPDATE sube 14 notas, y las comprobaciones de después (50 filas tras el ejercicio 3, A 14 / B 13 / C 23) ya no cuadran. Por eso ejercicios.txt trae los tres ejemplos dentro de START TRANSACTION ... ROLLBACK, para no cambiar tus datos: pruébalos así, o ejecuta el ROLLBACK tú mismo (las diapositivas ya lo avisan en el cuadro amarillo). El bloque entero debe ir en una sola ejecución de Adminer.

Qué verás (tras el CRUD del paso 3): el SELECT de la presentación devuelve 10 filas (todas con nota 5: empates) y el UPDATE cambia 14 filas si ya has hecho el INSERT y 13 si no (Ana Domingo, la del INSERT, tiene derecho_a_examen vacío y no entra). Tras el ROLLBACK, todo queda como estaba (nota = 5 en todas las filas, 48 alumnos).

Paso 6. Ejercicio 1. Bloque Ejercicio 1: escribe tu consulta (el enunciado está en la diapositiva) y compara.

Qué verás: 4 filas: Carlos, Hugo, Mario y Paula. Si no sale ninguna, comprueba que has elegido la base universidad; también vale ... WHERE apellidos LIKE 'Ru%' ORDER BY nombre;.

Paso 7. Ejercicio 2. Primero comprueba cuántas filas vas a tocar y solo entonces modifica.

Qué verás: el SELECT previo da 7 filas; el UPDATE informa 4 rows affected (y no 7: el motor solo cuenta las filas que cambian de verdad; los David que ya estaban en el grupo C no se cuentan, 7 − 4 = 3); la comprobación final por grupos da A 12, B 13, C 23.

Paso 8. Ejercicio 2B (contar, agrupar y relacionar). Bloque Ejercicio 2B: COUNT, GROUP BY, HAVING, subconsulta con NOT IN y JOIN.

Qué verás (cifras «tras los ejercicios 1 y 2», antes del ejercicio 3 de 03.04): COUNT(*) 48; A 12, B 13, C 23; HAVING > 3: Molina 5, Dominguez 4, Fernandez 4, Ruiz 4; NOT IN: Carlos, Lucia, Luis, Mario, Pablo. Si ya has hecho el ejercicio 3 (dos altas en el grupo A) saldrán 50 filas, A 14 y, en el NOT IN, 7 nombres (los 5 anteriores más los de tus dos alumnos nuevos): es lo correcto, no un error. El JOIN necesita la base paises del ejercicio 4 (actividad 03.05): va comentado en el fichero; quita los -- cuando hayas hecho ese ejercicio. Resultado esperado: Spain Sur, Italy Norte, France Centro, Greece Sur, Austria Centro.

Errores frecuentes

Síntoma Causa Solución
Error al pegar un bloque desde el PowerPoint PowerPoint mete caracteres no imprimibles Copia el bloque de ejercicios.txt
Error al pegar dos sentencias seguidas (Error 1064) Falta algún ; entre ellas Termina cada sentencia con ; o lánzalas de una en una
Registros duplicados (96) tras cargar tema3_estudiantes.sql dos veces El fichero no borra antes de insertar DROP DATABASE universidad; y carga el fichero una sola vez
Error (1054): Unknown column 'nota' al probar la presentación La columna nota no existe hasta el ALTER TABLE de la presentación Ejecuta ese ALTER TABLE primero (paso 5)
1060 Duplicate column name 'nota' Ya habías creado la columna y repites el ALTER TABLE Inofensivo: la columna ya está
El SELECT del ejercicio 1 no devuelve filas Elegiste otra base de datos USE universidad; (en minúscula)
Los números de los ejercicios no cuadran (por ejemplo, A 14 en vez de A 12) Ejecutaste la presentación sin ROLLBACK, o repetiste un INSERT Si no puedes arreglarlo a mano, DROP DATABASE universidad; y vuelve a cargar el fichero
Adminer rechaza el fichero por tamaño (Maximum allowed file size) Adminer con los límites de PHP por defecto Ver «Errores frecuentes» de 03.02 (estos ficheros pesan unos KB, así que no debería pasar con los scripts actuales)

Limpieza

En esta actividad no hay nada que borrar en AWS: todo es SQL dentro de tu RDS. No borres universidad: la necesitan las actividades 03.04 y 03.06. Si quieres empezar de cero, DROP DATABASE universidad; y vuelve a cargar tema3_estudiantes.sql.

La RDS y Adminer se borran al final del tema: Adminer en la limpieza de 03.02 y la RDS en la de 03.01, después de la última actividad que las use (03.09).

Cómo sabes que has terminado

Anterior: 03.02 · Adminer · Siguiente: 03.04 · Web app propia y ejercicio 3 (exportar e importar)