Filtrar con WHERE
SELECT * FROM clientes; te trae los ocho clientes de la tienda, sin excepción. Pero en la vida real casi nunca quieres "todos" — quieres los de Córdoba, los que gastaron más de 50€, los que se llaman Ana. Hoy aprendes a hacer preguntas concretas: la cláusula WHERE es donde SQL deja de ser una lista y empieza a ser un filtro de verdad.
WHERE: la condición que lo cambia todo
WHERE va justo después de FROM
y le dice al motor: "de todas las filas de esta tabla, tráeme solo las que
cumplan esto". Cualquier fila que no cumpla la condición, simplemente no aparece
en el resultado.
Operadores de comparación
Para comparar números (precios, cantidades, stock) tienes el kit de operadores habitual — los mismos que ya conoces de matemáticas del colegio, con una pequeña sorpresa en el de "distinto".
Igual a. Para texto, siempre entre comillas simples: 'Cordoba'.
Distinto de. Las dos formas funcionan en SQLite; <> es la más portable entre motores.
Mayor, menor, mayor o igual, menor o igual. Funcionan con números y también con fechas y texto (orden alfabético).
Combinar condiciones: AND, OR, NOT
Casi nunca basta con una sola condición. Estos tres operadores lógicos te dejan combinarlas — y, como en la vida real, el orden en que las combinas cambia completamente el resultado.
Se cumplen TODAS las condiciones a la vez. Cuantas más condiciones añadas con AND, más se reduce el resultado.
Se cumple AL MENOS UNA de las condiciones. Cuantas más añadas con OR, más crece el resultado.
Invierte una condición: "todo lo que NO cumpla esto".
Mezclar AND y OR sin paréntesis y esperar que SQL "entienda lo que querías
decir". WHERE ciudad = 'Madrid' OR ciudad = 'Sevilla' AND precio > 50
no hace lo que parece a simple vista: AND tiene más prioridad que OR, así que
esa condición se evalúa como "Madrid, O (Sevilla Y precio > 50)". Si quieres
que el precio aplique a ambas ciudades, usa paréntesis:
(ciudad = 'Madrid' OR ciudad = 'Sevilla') AND precio > 50.
Ponlo a prueba
Comprueba lo que has aprendido
1. ¿Qué hace WHERE precio > 50?
2. Quieres productos que sean de categoría "Audio" Y cuesten menos de 30€, ambas condiciones a la vez. ¿Qué operador usas?
3. ¿Por qué conviene usar paréntesis al mezclar AND y OR?