🎯 Quedan pocos días este mes Apoya SQLTest.online y ayúdanos a mantener la práctica de SQL gratuita para todos. Dona hoy →
Código SQL copiado al portapapeles

Cláusula WHERE en SQL: filtrar datos en las consultas

Lección 2.2 · Tiempo de lectura: ~6 min · Tareas de práctica ↓

La cláusula WHERE de SQL filtra las filas de una tabla evaluando una condición para cada registro: solo se devuelven las filas en las que la condición es verdadera. En esta lección aprenderás los operadores de comparación, BETWEEN, IN, la búsqueda de patrones con LIKE y la forma correcta de tratar los valores NULL.

La sentencia SELECT por sí sola devuelve todas las filas de una tabla. En los casos reales normalmente solo necesitas una parte de los datos que cumpla ciertos criterios, y la cláusula WHERE es justo la forma de expresarlos.

Cláusula WHERE en SQL: cada fila de la tabla se compara con la condición y solo se devuelven las filas en las que es TRUE; operadores de comparación, BETWEEN, IN, LIKE e IS NULL

¿Qué es la cláusula WHERE de SQL?

La cláusula WHERE filtra los registros antes de que se devuelvan en el resultado. Garantiza que solo se incluyan las filas que cumplen la condición indicada.

Sintaxis básica

SELECT column1, column2, ...
FROM table_name
WHERE condition;

La condición es una expresión que se evalúa como verdadera, falsa o desconocida (cuando hay valores NULL). Solo se devuelven las filas en las que la condición es verdadera.


Operadores de comparación de SQL en WHERE

SQL ofrece un conjunto de operadores para comparar los valores de las columnas en la cláusula WHERE:

OperadorDescripciónEjemplo
=Igual aWHERE last_name = 'SMITH'
<> o !=Distinto deWHERE store_id <> 1
>Mayor queWHERE rental_rate > 2.99
<Menor queWHERE length < 60
>=Mayor o igual queWHERE replacement_cost >= 20.00
<=Menor o igual queWHERE amount <= 5.00
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;

Resultado: todas las películas cuyo precio de alquiler es exactamente 4,99 $.


Operadores BETWEEN, IN y LIKE de SQL

SQL incluye operadores potentes para filtrar por rango, por lista y por patrón.

BETWEEN: filtro por rango

Filtra los valores que están dentro de un rango (incluidos los dos extremos).

SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;

Resultado: los pagos de 5,00 $ a 10,00 $, ambos incluidos.

IN: coincidencia con una lista

Coincide con cualquier valor de una lista indicada. Es más limpio que varias condiciones OR.

SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);

Resultado: los clientes de la tienda 1 o de la tienda 2.

LIKE: búsqueda de patrones

Busca un patrón en una columna de texto usando comodines:

  • %: cero, uno o más caracteres.
  • _: exactamente un carácter.
-- Films whose title starts with 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';

-- Films where the second letter is 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';

Cómo filtrar valores NULL en SQL

No puedes usar = ni <> para comprobar NULL: esas comparaciones siempre devuelven desconocido, nunca verdadero. Tienes que usar IS NULL o IS NOT NULL.

-- Wrong: this returns no rows
-- WHERE return_date = NULL

-- Correct
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;

Resultado: todos los alquileres que aún no se han devuelto.


Puntos clave:

  • La cláusula WHERE filtra las filas antes de que se devuelvan en el resultado.
  • Los valores de texto y de fecha deben ir entre comillas simples (por ejemplo, 'SMITH'); los valores numéricos no necesitan comillas.
  • BETWEEN incluye los extremos: BETWEEN 5 AND 10 incluye el 5 y el 10.
  • IN es una alternativa concisa a varias condiciones OR.
  • Usa LIKE para buscar patrones con % (cualquier secuencia) y _ (un solo carácter).
  • Nunca uses = con NULL: usa siempre IS NULL o IS NOT NULL.

Preguntas frecuentes

¿Qué diferencia hay entre WHERE y HAVING en SQL?

WHERE filtra las filas antes de agrupar y agregar. HAVING filtra después: trabaja sobre los resultados de GROUP BY. Usa WHERE para filtrar filas individuales y HAVING para filtrar grupos agregados.

¿Se pueden usar varias condiciones en una cláusula WHERE?

Sí. Combina condiciones con AND (las dos deben ser verdaderas), OR (basta con que una lo sea) o NOT (negación). También puedes usar paréntesis para controlar el orden de evaluación.

¿Por qué WHERE column = NULL no devuelve resultados?

Porque NULL representa un valor desconocido: comparar cualquier cosa con NULL mediante = siempre devuelve desconocido, no verdadero ni falso. SQL exige IS NULL o IS NOT NULL para comprobar la ausencia de valor.

Intenta resolver las siguientes tareas para reforzar lo que aprendiste en esta lección.

  1. Identificar Películas Largas
  2. Recuperar Actores por Nombre
  3. Recuperar Miembros del Personal por ID de Tienda
  4. Recuperar Títulos de Películas por Descripción
  5. Identificar Clientes Activos