Lección 2.2 Filtrado de Datos con la Cláusula WHERE
La instrucción SELECT por sí sola devuelve todas las filas de una tabla. Sin embargo, en escenarios del mundo real, generalmente solo necesitas un subconjunto de datos que cumpla con criterios específicos. Aquí es donde entra la cláusula WHERE.
¿Qué es la Cláusula WHERE?
La cláusula WHERE se utiliza para filtrar registros. Asegura que solo aquellas filas que satisfacen una condición específica se incluyan en el conjunto de resultados.
Sintaxis Básica
SELECT column1, column2, ...
FROM table_name
WHERE condition;
La condición es una expresión que evalúa a verdadero, falso o desconocido (si hay valores NULL involucrados). Solo se devuelven las filas donde la condición evalúa a verdadero.
Operadores de Comparación
SQL proporciona una variedad de operadores para comparar valores en la cláusula WHERE:
| Operador | Descripción | Ejemplo |
|---|---|---|
= | Igual a | WHERE last_name = 'SMITH' |
<> o != | No igual a | WHERE store_id <> 1 |
> | Mayor que | WHERE rental_rate > 2.99 |
< | Menor que | WHERE length < 60 |
>= | Mayor o igual que | WHERE replacement_cost >= 20.00 |
<= | Menor o igual que | WHERE amount <= 5.00 |
Ejemplo (Base de Datos Sakila)
Para encontrar películas con una tarifa de alquiler de $4.99 de la tabla film:
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;
Operadores de Filtrado Especiales
SQL incluye potentes operadores para rango, conjunto y coincidencia de patrones.
1. BETWEEN
Filtra valores dentro de un cierto rango (inclusive).
-- Encontrar pagos entre $5.00 y $10.00
SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;
2. IN
Coincide con cualquier valor en una lista especificada.
-- Encontrar clientes de tiendas específicas
SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);
3. LIKE
Busca un patrón especificado en una columna utilizando comodines:
%representa cero, uno o múltiples caracteres._representa un solo carácter.
Ejemplo (Base de Datos Sakila)
-- Encontrar películas que comienzan con 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';
-- Encontrar películas donde la segunda letra es 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';
La Trampa: Filtrando valores NULL
Como aprendimos en la lección sobre NULLs, no puedes usar = o <> para verificar NULL. Debes usar IS NULL o IS NOT NULL.
Ejemplo (Base de Datos Sakila)
-- Incorrecto
-- WHERE return_date = NULL
-- Correcto
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;
Puntos Clave de esta Lección:
- La cláusula
WHEREfiltra filas antes de que se devuelvan al conjunto de resultados. - Los valores de cadena y fecha deben estar entre comillas simples (por ejemplo,
'SMITH'). - Los valores numéricos no requieren comillas.
- Usa
LIKEpara coincidencia de patrones yINpara coincidencias contra listas. - Nunca uses
=conNULL; siempre usaIS NULL.
En la próxima lección, exploraremos cómo Combinar Múltiples Condiciones para crear filtros aún más potentes.