SQL PARA PRINCIPIANTES · POSTGRESQL

Ejercicios SQL WHERE resueltos

Aprendé a filtrar filas con cinco prácticas cortas, desde una comparación hasta condiciones combinadas.

Todos los datos son ficticios. Intentá resolver cada consigna antes de leer la solución. Si recién empezás, revisá primero la guía de ejercicios SELECT. No necesitás una cuenta ni JavaScript para leer esta página.

¿Para qué sirve WHERE?

WHERE filtra las filas de una consulta: solo devuelve aquellas cuya condición es verdadera. Se escribe después de FROM. Mientras SELECT elige las columnas que se muestran, WHERE decide qué filas aparecen. Consultar no modifica los datos guardados.

SELECT columna_1, columna_2 FROM tabla WHERE condicion;

Usamos PostgreSQL básico: TEXT representa texto e INTEGER, números enteros. Los textos llevan comillas simples, como 'Patio'; los números no. El punto y coma cierra la consulta.

Podés comparar con = (igual), <> (distinto), <, >, <= y >=. Combiná condiciones con AND (ambas) u OR (al menos una) y usá paréntesis para agruparlas.

Estos ejemplos no tienen valores nulos. Si un dato fuera NULL (desconocido), se comprobaría con IS NULL, no con = NULL.

Importante: sin ORDER BY, PostgreSQL no garantiza el orden de las filas. Los resultados muestran los valores esperados, no un orden obligatorio.

1. Buscar una coincidencia de texto

Consigna: La escuela prepara una muestra de arte. Mostrá nombre y aula de los talleres cuya categoria sea exactamente Arte.

Esquema de talleres: nombre TEXT, categoria TEXT, aula TEXT.

Tabla talleres · datos ficticios
nombrecategoriaaula
MuralArteA1
RobóticaTecnologíaB2
GrabadoArteA3

Solución explicada

SELECT nombre, aula
FROM talleres
WHERE categoria = 'Arte';

El signo = compara cada categoría con el texto entre comillas simples. Mural y Grabado cumplen la condición; Robótica queda fuera. Podemos filtrar por categoria sin mostrar esa columna. En esta comparación se distingue entre mayúsculas y minúsculas: Arte no es arte.

Resultado esperado · orden de filas no garantizado
nombreaula
MuralA1
GrabadoA3

2. Comparar cantidades

Consigna: Para preparar un pedido, mostrá articulo y unidades de los materiales con menos de 5 unidades disponibles.

Esquema de materiales: articulo TEXT, unidades INTEGER.

Tabla materiales · datos ficticios
articulounidades
Cartulina4
Marcador5
Pegamento2
Regla8

Solución explicada

SELECT articulo, unidades
FROM materiales
WHERE unidades < 5;

El operador < significa menor que. Se incluyen 4 y 2, pero no 5: el límite queda excluido. Para incluirlo usaríamos <=. Los números se escriben sin comillas.

Resultado esperado · orden de filas no garantizado
articulounidades
Cartulina4
Pegamento2

3. Cumplir dos condiciones con AND

Consigna: Buscá lecturas breves para la biblioteca. Mostrá titulo y paginas de los libros del género Cuento que tengan como máximo 80 páginas.

Esquema de libros: titulo TEXT, genero TEXT, paginas INTEGER.

Tabla libros · datos ficticios
titulogeneropaginas
La cometa azulCuento64
El faro del surCuento80
SenderosCuento96
Versos del patioPoesía40

Solución explicada

SELECT titulo, paginas
FROM libros
WHERE genero = 'Cuento' AND paginas <= 80;

AND exige que ambas condiciones sean verdaderas en la misma fila. El faro del sur entra porque <= incluye 80. Senderos supera el límite y Versos del patio no es un cuento, aunque tiene pocas páginas.

Resultado esperado · orden de filas no garantizado
titulopaginas
La cometa azul64
El faro del sur80

4. Aceptar alternativas con OR

Consigna: El club escolar consulta los espacios del lunes o del miércoles. Mostrá actividad y dia de los turnos de cualquiera de esos dos días.

Esquema de turnos: actividad TEXT, dia TEXT.

Tabla turnos · datos ficticios
actividaddia
AjedrezLunes
TeatroMartes
RadioMiércoles
HuertaViernes

Solución explicada

SELECT actividad, dia
FROM turnos
WHERE dia = 'Lunes' OR dia = 'Miércoles';

OR incluye una fila cuando al menos una condición es verdadera. Hay que escribir la comparación completa a cada lado: dia = antes de cada texto. Usar AND aquí no devolvería filas, porque un mismo valor de dia no puede ser ambos textos a la vez.

Resultado esperado · orden de filas no garantizado
actividaddia
AjedrezLunes
RadioMiércoles

5. Agrupar alternativas y aplicar un requisito

Consigna: Para una jornada, mostrá nombre, espacio y cupo de las propuestas que se realicen en Patio o Gimnasio y que, en cualquiera de los dos casos, tengan al menos 15 lugares.

Esquema de propuestas: nombre TEXT, espacio TEXT, cupo INTEGER.

Tabla propuestas · datos ficticios
nombreespaciocupo
Juegos cooperativosPatio20
RondasPatio10
CircuitoGimnasio15
EquilibrioGimnasio8
CoroSalón25

Solución explicada

SELECT nombre, espacio, cupo
FROM propuestas
WHERE (espacio = 'Patio' OR espacio = 'Gimnasio')
  AND cupo >= 15;

Los paréntesis agrupan los dos espacios aceptados; después AND exige el cupo mínimo para ambos. >= incluye 15. Sin paréntesis, AND tiene prioridad sobre OR y cualquier propuesta del Patio entraría, incluso Rondas con cupo 10. Coro queda fuera por su espacio.

Resultado esperado · orden de filas no garantizado
nombreespaciocupo
Juegos cooperativosPatio20
CircuitoGimnasio15

Llevá WHERE al aula

Antes de ejecutar cada consulta, marcá qué filas cumplen la condición. Después probá cambiar un límite o reemplazar AND por OR y explicá por qué cambia el resultado.

En el generador gratuito podés elegir WHERE, nivel básico o intermedio, y 1, 2 o 5 ejercicios. Descargá la actividad y las soluciones por separado en PDF o imprimilas.

Crear una actividad SQL gratuita →

Después de filtrar, aprendé a ordenar los resultados con los ejercicios SQL ORDER BY resueltos.