Ir al contenido
wannacode

WHERE: filtrar filas

En resumen: WHERE conserva solo las filas que cumplen una condición construida con comparaciones y con AND, OR y NOT.

Problema

¿Qué se agotó?

Cada mañana la encargada quiere saber qué productos hay que pedir porque se agotaron. La tabla tiene 25 productos. Mañana tendrá 2500.

No necesita todas las filas. Necesita solo aquellas donde las existencias son 0.

La idea

WHERE

WHERE conserva solo las filas para las que la condición es verdadera:

SQLbase de datos: tienda

La base recorre cada fila, comprueba stock = 0 y conserva las verdaderas. La condición puede usar cualquier columna, no solo las de SELECT.

Las comparaciones son: = igual, <> distinto, <, >, <=, >=. Los números se escriben con punto decimal:

SQLbase de datos: tienda

El texto va entre comillas simples:

SQLbase de datos: tienda
Más precisamente, para curiosos

SQLite también acepta city = "Plovdiv" con comillas dobles, pero solo por una vieja costumbre: si no hay ninguna columna con ese nombre, lo toma como texto. PostgreSQL dirá que no existe la columna «Plovdiv». Escribe el texto entre comillas simples y la consulta funcionará en todas partes.

Pruébalo

Los productos caros

Muestra el nombre y el precio de los productos que cuestan al menos 10 €.

SQLbase de datos: tienda

La idea

AND, OR, NOT

Las condiciones se pueden combinar:

  • AND: las dos deben ser verdaderas.
  • OR: al menos una es verdadera.
  • NOT: da la vuelta a la condición.

Productos baratos hay de sobra (para una oferta «lleva tres»):

SQLbase de datos: tienda

Míralo

La trampa del OR

Marketing quiere los clientes de Sofía o de Plovdiv que se registraron desde principios de 2026. Aquí va un primer intento. Ejecútalo y mira las fechas:

SQLbase de datos: tienda
1. La consulta con OR y AND devolvió a Maria, que se registró en 2025. ¿Por qué?

Con paréntesis, la condición dice exactamente lo que quieres:

SQLbase de datos: tienda

Siempre que mezcles AND y OR, añade paréntesis, aunque no hagan falta. Quien lea la consulta después de ti no tendrá que preguntarse nada.

Pruébalo

Los pedidos en espera

Muestra el número, el cliente y el estado de los pedidos que son new o paid, pero todavía no enviados.

SQLbase de datos: tienda

Ejercicio

Dos tareas

1. Todos los pedidos menos los cancelados (cancelled). Muestra el número y el estado. Pruébalo con NOT.

Los pedidos que no están cancelados:

SQLbase de datos: tienda

2. La tienda abre un almacén en la costa. ¿Qué clientes de Varna o de Burgas están con nosotros desde 2025? Muestra el nombre, la ciudad y la fecha de registro.

Clientes de Varna o de Burgas que se registraron antes de 2026:

SQLbase de datos: tienda

Test

Ponte a prueba

1. ¿Cómo se escribe «la ciudad es Varna»?
2. ¿Qué condición encuentra los productos que NO cuestan 2,50 €?
3. ¿Qué devuelve WHERE status = 'new' AND status = 'paid'?
4. ¿En qué orden se escriben las partes de una consulta?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·