Trabajamos sobre la base de practica tablas_libro: SELECT, WHERE, ORDER BY y LIMIT.
La base del taller: tablas_libro
Tiene 30 tablas y 4 vistas con datos chicos a proposito: todo se puede verificar a mano. En esta clase usamos estas:
| Tabla | Filas | Que guarda | Columnas principales |
|---|---|---|---|
| alumnos | 6 | Alumnos de la academia | ID_ALUMNO, NOMBRE, APELLIDOS, F_NACIMIENTO |
| empleados | 4 | Personal y salarios | ID_EMPLEADO, NOMBRE, SEXO (‘H’/’M’), CARGO, SALARIO |
| articulos | 5 | Productos con precio de lista | ID_ARTICULO, DESCRIPCION, PRECIO |
| mascotas | 16 | Refugio de animales | NOMBRE, ESPECIE (‘P’/’G’), SEXO (‘M’/’H’), UBICACION, ESTADO (‘A’/’B’) |
| vehiculos | 5 | Inspecciones tecnicas (ITV) | MARCA, MODELO, PROX_ITV, ULTI_ITV (admite NULL) |
| poker | 12 | Sesiones de juego | F_SESION, GANANCIA (negativa = perdida) |
| jornadas / quinielas | 10 / 21 | Jornadas de futbol y apuestas | DISPUTADA (‘S’/’N’), ESCRUTADA, ACIERTOS |
Ojo con los codigos
Enmascotas, SEXO ‘M’ es macho y ‘H’ es hembra; en empleados, ‘H’ es hombre y ‘M’ es mujer. Siempre revisa que significa cada codigo antes de filtrar.SELECT – consultar datos
USE tablas_libro;
SELECT ID_ALUMNO, NOMBRE, APELLIDOS, F_NACIMIENTO
FROM alumnos;
Resultado (primeras filas):
| ID_ALUMNO | NOMBRE | APELLIDOS | F_NACIMIENTO |
|---|---|---|---|
| 1 | Pablo | Hernandaz Mata | 1995-03-14 |
| 2 | Jeremias | Santo Lote | 1993-07-12 |
| 3 | Teresa | Lomas Trillo | 1989-06-19 |
WHERE – filtrar filas
| Operador | Significado | Ejemplo |
|---|---|---|
| = | Igual a | WHERE CARGO = ‘Mozo’ |
| <> o != | Distinto de | WHERE UBICACION <> ‘E01’ |
| > >= | Mayor (o igual) | WHERE SALARIO >= 1400 |
| < <= | Menor (o igual) | WHERE GANANCIA < 0 |
| BETWEEN | En un rango | WHERE PRECIO BETWEEN 1 AND 2 |
| LIKE | Patron de texto | WHERE DESCRIPCION LIKE ‘%gr.%’ |
| IN | En una lista | WHERE UBICACION IN (‘E01′,’E05’) |
| IS NULL | Valor nulo | WHERE ULTI_ITV IS NULL |
SELECT NOMBRE, CARGO, SALARIO
FROM empleados
WHERE SALARIO > 1350;
-- Carlos (Mozo, 1500) y Jose (Mozo, 1400)
ORDER BY – ordenar / LIMIT – limitar
SELECT NOMBRE, SALARIO
FROM empleados
ORDER BY SALARIO DESC -- de mayor a menor
LIMIT 2; -- solo los 2 sueldos mas altos
Estructura completa de un SELECT
SELECT columna1, columna2, ... -- (1) que columnas
FROM tabla -- (2) de que tabla
WHERE condicion -- (3) filtro (opcional)
ORDER BY columna ASC|DESC -- (4) orden (opcional)
LIMIT N; -- (5) maximo de filas (opcional)
Funciones frecuentes
| Funcion | Uso | Ejemplo | Resultado |
|---|---|---|---|
| COUNT(*) | Contar filas | SELECT COUNT(*) FROM mascotas; | 16 |
| SUM(col) | Sumar | SELECT SUM(SALARIO) FROM empleados; | 5525.5 |
| AVG(col) | Promedio | SELECT AVG(SALARIO) FROM empleados; | 1381.375 |
| MAX / MIN | Maximo / minimo | SELECT MAX(SALARIO), MIN(SALARIO) FROM empleados; | 1500 / 1300 |
| ROUND(n,d) | Redondear | SELECT ROUND(AVG(PRECIO),2) FROM articulos; | 2.97 |
| YEAR / MONTH | Extraer de fecha | SELECT NOMBRE, YEAR(F_NACIMIENTO) FROM alumnos; | Pablo 1995… |
Consultas de verificacion de la base
SELECT COUNT(*) AS total_mascotas FROM mascotas; -- debe dar 16
SELECT MIN(F_SESION) AS primera, MAX(F_SESION) AS ultima FROM poker;
-- 2008-12-18 y 2009-04-06
SELECT DATE_FORMAT(F_SESION,'%Y-%m') AS mes,
COUNT(*) AS sesiones,
SUM(GANANCIA) AS ganancia
FROM poker
GROUP BY mes
ORDER BY mes;
-- 2008-12: 2 / -11 · 2009-01: 2 / 9 · 2009-02: 3 / 3 · 2009-03: 4 / 22 · 2009-04: 1 / -27
Ejercicios practicos
Completa cada ejercicio en MySQL Workbench con USE tablas_libro;. Podes ayudarte con ChatGPT o Claude si te trabas. Cada uno trae su solucion desplegable con el resultado esperado.
Ejercicio 1 – Articulos por precioBasico
Mostra la descripcion y el precio de TODOS los articulos, del mas caro al mas barato.
Ver solucion
SELECT DESCRIPCION, PRECIO
FROM articulos
ORDER BY PRECIO DESC;
-- Cafe 250 gr. (9.98) primero, Leche 1L. (0.95) ultimoEjercicio 2 – Gatos de altaBasico
Lista nombre y ubicacion de los gatos (ESPECIE = G) que estan de alta (ESTADO = A), por nombre.
Ver solucion
SELECT NOMBRE, UBICACION
FROM mascotas
WHERE ESPECIE = 'G' AND ESTADO = 'A'
ORDER BY NOMBRE;
-- 5 filas: Amaya, Americo, Dandi, Ras, TesaEjercicio 3 – Los 3 sueldos mas altosBasico
Mostra nombre, apellidos y salario de los 3 empleados que mas ganan.
Ver solucion
SELECT NOMBRE, APELLIDOS, SALARIO
FROM empleados
ORDER BY SALARIO DESC
LIMIT 3;
-- Carlos 1500 · Jose 1400 · Margarita 1325.5Ejercicio 4 – Alumnos nacidos desde 1992Basico
Alumnos nacidos el 1 de enero de 1992 o despues, del mas grande al mas chico.
Ver solucion
SELECT NOMBRE, APELLIDOS, F_NACIMIENTO
FROM alumnos
WHERE F_NACIMIENTO >= '1992-01-01'
ORDER BY F_NACIMIENTO;
-- Marta, Jeremias, PabloEjercicio 5 – Jornadas sin disputarBasico
Nombre y fecha de las jornadas que todavia no se disputaron (DISPUTADA = N).
Ver solucion
SELECT NOMBRE, FECHA
FROM jornadas
WHERE DISPUTADA = 'N';
-- Jornadas 8, 9 y 10Ejercicio 6 – Perdidas de 2009Basico
Sesiones de poker de 2009 con perdida (GANANCIA negativa), de la peor a la menos mala.
Ver solucion
SELECT F_SESION, GANANCIA
FROM poker
WHERE GANANCIA < 0
AND F_SESION BETWEEN '2009-01-01' AND '2009-12-31'
ORDER BY GANANCIA;
-- 4 filas: -57, -37, -28, -27Ejercicio 7 – Mascotas en E01 o E05Basico
Nombre, especie y ubicacion de las mascotas ubicadas en E01 o E05 (usa IN).
Ver solucion
SELECT NOMBRE, ESPECIE, UBICACION
FROM mascotas
WHERE UBICACION IN ('E01', 'E05')
ORDER BY UBICACION, NOMBRE;
-- 6 filas: Ras, Talia, Tesa (E01) · Budy, Sombra, Zulay (E05)Ejercicio 8 – ITV vencidas antes de 2011Basico
Vehiculos cuya proxima ITV es anterior a 2011, ordenados por fecha.
Ver solucion
SELECT MARCA, MODELO, PROX_ITV
FROM vehiculos
WHERE PROX_ITV < '2011-01-01'
ORDER BY PROX_ITV;
-- Seat Panda, BMW X3, Citroen C2Ejercicio 9 – Quinielas con buenos aciertosIntermedio
Quinielas ya escrutadas (ESCRUTADA = S) con 2 aciertos o mas, de mayor a menor.
Ver solucion
SELECT NOMBRE, ID_JORNADA, ACIERTOS
FROM quinielas
WHERE ESCRUTADA = 'S' AND ACIERTOS >= 2
ORDER BY ACIERTOS DESC, NOMBRE;
-- 5 filas: Quini 3.3 (3), luego Quini 3.4, 4.1, 5.1 y 5.2 (2)Ejercicio 10 – Articulos en un rango de precioIntermedio
Articulos con precio entre 1 y 2 (incluidos), del mas barato al mas caro.
Ver solucion
SELECT DESCRIPCION, PRECIO
FROM articulos
WHERE PRECIO BETWEEN 1 AND 2
ORDER BY PRECIO;
-- Galletas 200 gr., Fregasuelos, Agua 5L.Ejercicio 11 – Buscar por texto parcialIntermedio
Articulos cuya descripcion contenga gr. (gramos), usando LIKE.
Ver solucion
SELECT DESCRIPCION, PRECIO
FROM articulos
WHERE DESCRIPCION LIKE '%gr.%';
-- Cafe 250 gr. y Galletas 200 gr.Ejercicio 12 – Top 3 gananciasIntermedio
Las 3 sesiones de poker con mayor ganancia (fecha y ganancia).
Ver solucion
SELECT F_SESION, GANANCIA
FROM poker
ORDER BY GANANCIA DESC
LIMIT 3;
-- 2009-03-12 (49) · 2009-01-06 (46) · 2008-12-18 (23)Materiales y base de datos del curso
El script tablasLibro.sql crea las 30 tablas y 4 vistas de tablas_libro. Antes de ejecutarlo en Workbench, crea y selecciona la base:
CREATE DATABASE tablas_libro;
USE tablas_libro;
-- File > Open SQL Script > tablasLibro.sql > ejecutar todoUso de IA – la IA como copiloto de SQL
Podes describir lo que necesitas en espanol y la IA (ChatGPT o Claude) genera la consulta por vos, o te explica una consulta que no entendes. Dale primero el contexto de las tablas:
Tengo una base MySQL 8 llamada tablas_libro. Algunas tablas:
alumnos (ID_ALUMNO, NOMBRE, APELLIDOS, F_NACIMIENTO)
empleados (ID_EMPLEADO, NOMBRE, APELLIDOS, SEXO 'H'/'M', CARGO, SALARIO)
articulos (ID_ARTICULO, DESCRIPCION, PRECIO)
mascotas (ID_MASCOTA, NOMBRE, ESPECIE 'P'/'G', SEXO 'M'/'H', UBICACION, ESTADO 'A'/'B')
Necesito: [describi lo que queres ver en espanol]- “Mostrame los empleados que ganan mas de 1.350, ordenados por salario.”
- “Que mascotas hembras estan de alta en la ubicacion E02?”
- “Lista los alumnos nacidos en la decada del 90.”
- “Explicame que hace esta consulta: SELECT… WHERE… ORDER BY…”
Uso adecuado de la IA
- Escribi y ejecuta vos mismo las consultas en Workbench: el objetivo es ganar soltura con SQL.
- Verifica siempre el resultado (COUNT, totales) antes de confiar en la consulta que genero la IA.
- No copies una consulta que no puedas explicar; pedi que te la explique paso a paso.
- Desconfia de comandos que borren o modifiquen datos (DROP, DELETE, UPDATE) sin que entiendas su efecto.
