Repositorio educativo con 5 examenes de SQL basados en bases de datos tematicas. Ideal para practicar y evaluar habilidades SQL de nivel bajo-intermedio.
El repositorio incluye 5 bases de datos SQLite con tematicas diferentes:
| Base de Datos | Tema | Tablas |
|---|---|---|
gimnasio.db |
Sistema de gimnasio | miembros, clases, asistencias |
restaurante.db |
Gestion de restaurante | meseros, mesas, ordenes |
hospital.db |
Sistema hospitalario | pacientes, doctores, consultas |
banco.db |
Entidad bancaria | clientes, cuentas, transacciones |
bar.db |
Bar/Cantina | bartenders, bebidas, ventas |
Cada examen incluye:
- Diagrama Entidad-Relacion en formato ASCII
- 12 preguntas de logica de negocio en lenguaje natural
- Solucion con query SQL y respuesta exacta
- Comentarios humoristicos para analistas de datos
Las preguntas están optimizadas para evaluación en papel:
- ✅ 80% de preguntas retornan 1-3 valores (ideales para escribir a mano)
- ✅ 20% de preguntas retornan 4-8 filas (tablas pequeñas de categorías)
- ✅ 0% de preguntas retornan listas largas (>8 filas)
- ✅ Todas las soluciones incluyen la respuesta exacta para facilitar la calificación
Esto permite que:
- Los estudiantes completen el examen en papel en 15-20 minutos
- Los profesores califiquen rápidamente con respuestas puntuales
- No sea necesario escribir docenas de filas a mano
examen-sql/
├── pyproject.toml # Configuracion del proyecto
├── README.md # Este archivo
├── verify_questions.py # Script de validacion (ver abajo)
├── src/
│ └── generadores/ # Scripts para generar las BDs
│ ├── gimnasio.py
│ ├── restaurante.py
│ ├── hospital.py
│ ├── banco.py
│ └── bar.py
├── data/ # Bases de datos SQLite
│ ├── gimnasio.db
│ ├── restaurante.db
│ ├── hospital.db
│ ├── banco.db
│ └── bar.db
├── examenes/ # Preguntas de cada examen
│ ├── examen_gimnasio.md
│ ├── examen_restaurante.md
│ ├── examen_hospital.md
│ ├── examen_banco.md
│ └── examen_bar.md
└── soluciones/ # Respuestas y queries SQL
├── solucion_gimnasio.md
├── solucion_restaurante.md
├── solucion_hospital.md
├── solucion_banco.md
└── solucion_bar.md
- Python 3.10+
- uv (gestor de paquetes)
# Clonar el repositorio
git clone <url-del-repositorio>
cd examen-sql
# Instalar dependencias
uv sync- Abre el archivo de examen correspondiente en
examenes/ - Lee el diagrama ER para entender la estructura de la BD
- Conectate a la base de datos usando SQLite:
sqlite3 data/gimnasio.db- Responde las 12 preguntas escribiendo queries SQL
- Consulta las soluciones en
soluciones/para verificar tus respuestas
Si deseas regenerar los datos con nuevos valores aleatorios:
uv run python src/generadores/gimnasio.py
uv run python src/generadores/restaurante.py
uv run python src/generadores/hospital.py
uv run python src/generadores/banco.py
uv run python src/generadores/bar.pyDespués de regenerar las bases de datos, verifica que todas las preguntas sigan retornando respuestas cortas:
python3 verify_questions.pyEl script valida que las 60 preguntas (12 por examen) tengan respuestas apropiadas:
- ✅ Cortas: 1-3 filas
⚠️ Medianas: 4-8 filas- ❌ Largas: >8 filas (no deberían existir)
Los examenes cubren los siguientes conceptos:
- SELECT basico con filtros WHERE
- Operadores de comparacion (>, <, =, BETWEEN, IN, LIKE)
- Funciones de agregacion (COUNT, SUM, AVG, MAX, MIN)
- GROUP BY con y sin HAVING
- ORDER BY (ASC/DESC)
- INNER JOIN entre tablas
- Subconsultas simples
- CASE WHEN para categorizacion
- Combinacion de multiples conceptos
Bajo-Intermedio. Ideal para:
- Estudiantes aprendiendo SQL
- Profesionales preparando entrevistas tecnicas
- Cursos de introduccion a bases de datos
- Practica autodidacta
Uso educativo libre.