SELECT, FROM y WHERE en profundidad
WHERE es donde ocurre la magia del filtrado. En esta lección dominás todas las formas de filtrar datos: rangos, listas, patrones de texto, valores nulos y combinaciones lógicas.
Concepto teórico
Anatomía completa del SELECT
SELECT columnas -- qué querés ver FROM tabla -- de dónde WHERE condiciones -- filtro de filas ORDER BY columna -- orden (próxima lección) LIMIT n; -- cantidad máxima
El orden de las cláusulas es fijo. No podés poner WHERE antes de FROM ni LIMIT antes de ORDER BY. SQL exige este orden exacto.
Operadores de comparación en WHERE
| Operador | Significado | Ejemplo |
|---|---|---|
= |
Igual a | WHERE ciudad = 'Buenos Aires' |
!= o <> |
Distinto de | WHERE estado <> 'inactivo' |
> >= < <= |
Mayor, menor | WHERE score >= 650 |
BETWEEN a AND b |
Rango inclusivo | WHERE score BETWEEN 600 AND 800 |
IN (v1, v2, ...) |
Pertenece a lista | WHERE ciudad IN ('BsAs', 'Córdoba') |
LIKE 'patrón' |
Coincide con patrón | WHERE nombre LIKE 'Gar%' |
IS NULL |
Es nulo | WHERE email IS NULL |
IS NOT NULL |
No es nulo | WHERE email IS NOT NULL |
NOT |
Niega condición | WHERE NOT activo = 1 |
BETWEEN — rangos inclusivos
BETWEEN a AND b equivale a columna >= a AND columna <= b. Incluye ambos extremos. Es
más legible para rangos:
-- Score entre 600 y 800 (inclusive) WHERE score BETWEEN 600 AND 800 -- Equivale a: WHERE score >= 600 AND score <= 800
IN — lista de valores
IN (v1, v2, v3) reemplaza múltiples condiciones OR. Es mucho más limpio:
-- En vez de:
WHERE ciudad = 'BsAs' OR ciudad = 'Córdoba' OR ciudad = 'Rosario'
-- Usá:
WHERE ciudad IN ('BsAs', 'Córdoba', 'Rosario')
LIKE — búsqueda por patrón
LIKE permite buscar texto que coincida con un patrón usando wildcards:
%— coincide con cualquier cantidad de caracteres (0 o más)_— coincide con exactamente UN carácter
| Patrón | Match | No match |
|---|---|---|
'Gar%' |
García, Garza, Gar | Agarro, Pegar |
'%ez' |
Pérez, López, Fernández | Pérezito |
'%an%' |
Fernández, Banco, Manzana | Pedro |
'_ópez' |
López | Gómez (no tiene 5 letras con ópez) |
IS NULL — valores faltantes
= NULL. En SQL, NULL no es un valor — es la ausencia
de valor. La comparación columna = NULL SIEMPRE da NULL (ni True ni False). Tenés que usar
IS NULL o IS NOT NULL.
5 + NULL = NULL, NULL = NULL es NULL (no True). Por eso existe IS NULL como operador
especial.
Ejemplos explicados paso a paso
Ejemplo 1: BETWEEN para rangos
Hacé clic en ▶ Ejecutar
Ejemplo 2: IN para listas de valores
Hacé clic en ▶ Ejecutar
Ejemplo 3: LIKE para búsqueda de texto
Hacé clic en ▶ Ejecutar
Ejemplo 4: IS NULL / IS NOT NULL
Hacé clic en ▶ Ejecutar
Ejemplo 5: Combinación compleja de filtros
Hacé clic en ▶ Ejecutar
Referencia rápida
| Operador | Uso | Ejemplo |
|---|---|---|
BETWEEN a AND b |
Rango inclusivo | WHERE score BETWEEN 600 AND 800 |
IN (lista) |
Pertenece a lista | WHERE ciudad IN ('BsAs','Cba') |
NOT IN (lista) |
No pertenece | WHERE ciudad NOT IN ('BsAs') |
LIKE '%texto%' |
Contiene texto | WHERE email LIKE '%banco%' |
LIKE 'texto%' |
Empieza con | WHERE nombre LIKE 'Gar%' |
LIKE '%texto' |
Termina con | WHERE nombre LIKE '%ez' |
IS NULL |
Es nulo | WHERE email IS NULL |
IS NOT NULL |
No es nulo | WHERE email IS NOT NULL |
NOT |
Niega condición | WHERE NOT score > 700 |
Ejercicios
Ejercicio 1: BETWEEN
Traé clientes con score entre 650 y 750. Debe incluir García.
Hacé clic en ▶ Ejecutar
Ejercicio 2: IN
Traé clientes de Buenos Aires, Córdoba o Rosario usando IN. Debe incluir Martínez.
Hacé clic en ▶ Ejecutar
Ejercicio 3: LIKE con %
Traé clientes cuyo nombre empiece con 'P'. Debe incluir Pérez.
Hacé clic en ▶ Ejecutar
Ejercicio 4: IS NULL
Traé clientes que NO tengan email. Debe incluir López.
Hacé clic en ▶ Ejecutar
Ejercicio 5: NOT IN
Traé clientes que NO sean de Buenos Aires ni de Córdoba. Debe incluir Fernández.
Hacé clic en ▶ Ejecutar
Ejercicio 6: LIKE con % al inicio y final
Traé clientes cuyo email contenga "banco". Debe incluir garcia.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Combinación AND + BETWEEN + IS NOT NULL
Traé clientes activos con score entre 600 y 800 que tengan email. Debe incluir Sosa.
Hacé clic en ▶ Ejecutar
Ejercicio 8: OR con paréntesis
Traé clientes que: (sean de BsAs Y tengan score > 700) O (tengan saldo > 300000). Debe incluir
López.
Hacé clic en ▶ Ejecutar
Ejercicio 9: LIKE + IN + IS NOT NULL
Traé clientes con nombre que termine en 'ez', de BsAs o Córdoba, que tengan email. Debe incluir
Pérez o López.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Consulta de análisis completa
Contá cuántos clientes activos de Buenos Aires tienen score >= 700 y email registrado. Debe incluir
2.
Hacé clic en ▶ Ejecutar
Resumen y conexión
BETWEEN a AND bfiltra rangos (inclusivo). Más legible que>= AND <=.IN (v1, v2)reemplaza múltiples OR.NOT INexcluye.LIKEcon%(cualquier chars) y_(un char) busca patrones de texto.IS NULL/IS NOT NULLpara valores faltantes. NUNCA= NULL.- Los paréntesis controlan la precedencia de AND/OR (AND se evalúa antes que OR).
En la siguiente lección (03 · Operadores y filtros avanzados) vas a aprender CASE WHEN, COALESCE, NULLIF y CAST — las herramientas para transformar datos dentro del SELECT.
Recursos: W3Schools — WHERE