Módulo 2 · 02 | Primeras consultas SQL

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:

TablaFilasQue guardaColumnas principales
alumnos6Alumnos de la academiaID_ALUMNO, NOMBRE, APELLIDOS, F_NACIMIENTO
empleados4Personal y salariosID_EMPLEADO, NOMBRE, SEXO (‘H’/’M’), CARGO, SALARIO
articulos5Productos con precio de listaID_ARTICULO, DESCRIPCION, PRECIO
mascotas16Refugio de animalesNOMBRE, ESPECIE (‘P’/’G’), SEXO (‘M’/’H’), UBICACION, ESTADO (‘A’/’B’)
vehiculos5Inspecciones tecnicas (ITV)MARCA, MODELO, PROX_ITV, ULTI_ITV (admite NULL)
poker12Sesiones de juegoF_SESION, GANANCIA (negativa = perdida)
jornadas / quinielas10 / 21Jornadas de futbol y apuestasDISPUTADA (‘S’/’N’), ESCRUTADA, ACIERTOS

Ojo con los codigos

En mascotas, 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_ALUMNONOMBREAPELLIDOSF_NACIMIENTO
1PabloHernandaz Mata1995-03-14
2JeremiasSanto Lote1993-07-12
3TeresaLomas Trillo1989-06-19

WHERE – filtrar filas

OperadorSignificadoEjemplo
=Igual aWHERE CARGO = ‘Mozo’
<> o !=Distinto deWHERE UBICACION <> ‘E01’
> >=Mayor (o igual)WHERE SALARIO >= 1400
< <=Menor (o igual)WHERE GANANCIA < 0
BETWEENEn un rangoWHERE PRECIO BETWEEN 1 AND 2
LIKEPatron de textoWHERE DESCRIPCION LIKE ‘%gr.%’
INEn una listaWHERE UBICACION IN (‘E01′,’E05’)
IS NULLValor nuloWHERE 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

FuncionUsoEjemploResultado
COUNT(*)Contar filasSELECT COUNT(*) FROM mascotas;16
SUM(col)SumarSELECT SUM(SALARIO) FROM empleados;5525.5
AVG(col)PromedioSELECT AVG(SALARIO) FROM empleados;1381.375
MAX / MINMaximo / minimoSELECT MAX(SALARIO), MIN(SALARIO) FROM empleados;1500 / 1300
ROUND(n,d)RedondearSELECT ROUND(AVG(PRECIO),2) FROM articulos;2.97
YEAR / MONTHExtraer de fechaSELECT 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) ultimo

Ejercicio 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, Tesa

Ejercicio 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.5

Ejercicio 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, Pablo

Ejercicio 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 10

Ejercicio 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, -27

Ejercicio 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 C2

Ejercicio 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)

↑ Volver al indice


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 todo

Descargar la base de datos (tablasLibro.sql)

Uso 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.

↑ Volver al indice del modulo

Scroll al inicio
¿Consultas? Escribinos