WHERE es la cláusula que le dice a SQL cuáles filas mostrar según una condición específica que tú defines.
El problema de ver demasiado
Imagina que trabajas en Liverpool y tu base de datos tiene $500,000 productos registrados. Tu jefe te pide la lista de productos con precio menor a $200. Sin WHERE, tendrías que revisar medio millón de filas a mano. Con WHERE, SQL hace el trabajo en milisegundos y te entrega solo lo que necesitas.
Eso es exactamente lo que WHERE resuelve: filtrar el ruido y quedarte con la señal.
El Sistema de Filtrado: Condición-Resultado
Piensa en WHERE como el guardia de seguridad de tu consulta. Antes de que cualquier fila salga en los resultados, el guardia revisa si cumple la condición. Si sí cumple, pasa. Si no, se queda afuera.
La estructura siempre sigue este orden:
SELECT columnas
FROM tabla
WHERE condición;
Primero le dices qué quieres ver (SELECT), luego de dónde (FROM), y al final cuál es la regla de entrada (WHERE). El orden importa. SQL no acepta WHERE antes de FROM.
Tus Primeras Condiciones
Las condiciones más comunes usan operadores de comparación. Estos son los que necesitas conocer desde el inicio:
| Operador | Significado | Ejemplo |
|---|---|---|
| = | Igual a | precio = 500 |
| <> o != | Diferente a | ciudad <> 'CDMX' |
| > | Mayor que | salario > 15000 |
| < | Menor que | edad < 30 |
| >= | Mayor o igual | stock >= 10 |
| <= | Menor o igual | descuento <= 20 |
Cada operador es una pregunta que SQL le hace a cada fila. Solo las filas que respondan "sí" aparecen en tus resultados.
Ejemplos Concretos que Puedes Copiar Ahora
Ejemplo 1: Filtrar por número
Supón que tienes una tabla llamada empleados en FEMSA con las columnas nombre, departamento y salario. Quieres ver solo los empleados que ganan más de $20,000:
SELECT nombre, departamento, salario
FROM empleados
WHERE salario > 20000;
Resultado simulado:
nombre departamento salario
---------------- --------------- -------
Raquel Torres Logística $22,500
Eduardo Limas Tecnología $28,000
Carmen Ríos Finanzas $21,000
SQL revisó cada fila y solo dejó pasar las que tienen salario mayor a $20,000.
Ejemplo 2: Filtrar por texto
Ahora imagina una tabla productos de Bimbo con columnas nombre_producto, categoria y precio. Quieres ver solo los productos de la categoría "pan":
SELECT nombre_producto, precio
FROM productos
WHERE categoria = 'pan';
Nota importante: cuando filtras texto, el valor va entre comillas simples ('pan'). Nunca uses comillas dobles para texto en SQL estándar. Eso es un error muy común al empezar.
Resultado simulado:
nombre_producto precio
------------------ ------
Bimbo Blanco 680g $32
Medianoche 6 pzas $28
Bollitos de leche $25
Ejemplo 3: Filtrar por valor exacto con número
En Mercado Libre, imagina una tabla vendedores con columna nivel_reputacion (del 1 al 5). Quieres ver solo los vendedores con reputación perfecta:
SELECT nombre, ciudad, ventas_totales
FROM vendedores
WHERE nivel_reputacion = 5;
Este filtro te da exactamente los vendedores con nivel 5, sin uno más, sin uno menos.
Combinar Condiciones con AND y OR
Una sola condición es útil. Pero a veces necesitas dos o más al mismo tiempo. Aquí entran AND y OR.
AND: las dos condiciones deben cumplirse
Supón que en Liverpool quieres productos de la categoría "electrónica" y con precio menor a $3,000:
SELECT nombre_producto, categoria, precio
FROM productos
WHERE categoria = 'electronica'
AND precio < 3000;
Con AND, una fila solo pasa si cumple todas las condiciones. Si un producto es electrónica pero cuesta $4,500, no aparece. Si cuesta $2,800 pero es ropa, tampoco aparece.
OR: basta con que una condición se cumpla
Ahora quieres productos de "electrónica" o de "cómputo":
SELECT nombre_producto, categoria, precio
FROM productos
WHERE categoria = 'electronica'
OR categoria = 'computo';
Con OR, una fila pasa si cumple al menos una condición. Un producto de electrónica que no es cómputo igual aparece. Uno de cómputo que no es electrónica también aparece.
Combinando AND y OR juntos
Puedes mezclar ambos. Solo usa paréntesis para ser claro en el orden de evaluación:
SELECT nombre_producto, categoria, precio
FROM productos
WHERE (categoria = 'electronica' OR categoria = 'computo')
AND precio < 5000;
Aquí primero se evalúa lo que está dentro del paréntesis (OR), y luego SQL aplica el AND. Sin paréntesis, SQL puede interpretar la lógica de forma diferente a lo que esperas.
Excluir Datos con NOT
NOT invierte una condición. En lugar de decir "quiero esto", dices "quiero todo excepto esto".
Ejemplo en una tabla empleados de FEMSA donde quieres ver todos los departamentos excepto el de "ventas":
SELECT nombre, departamento, salario
FROM empleados
WHERE NOT departamento = 'ventas';
Esto equivale a escribir departamento <> 'ventas'. Ambas formas funcionan. NOT es más legible cuando la condición es compleja.
Errores Comunes que Debes Evitar
Aprender SQL es más rápido cuando conoces los errores antes de cometerlos. Estos son los más frecuentes con WHERE:
Error 1: Usar = en lugar de <> para "diferente"
Algunas personas escriben NOT columna = valor y otras columna <> valor. Las dos funcionan. Pero nunca escribas columna = NOT valor: eso no tiene sentido en SQL y generará un error.
Error 2: Olvidar las comillas en texto
Si escribes WHERE ciudad = CDMX sin comillas, SQL pensará que CDMX es una columna o variable, no un texto. Siempre usa comillas simples: WHERE ciudad = 'CDMX'.
Error 3: Confundir AND con OR en la lógica
Si quieres empleados de Guadalajara Y de CDMX al mismo tiempo, no puedes usar AND entre ciudades. Una persona no puede estar en dos ciudades a la vez. Usa OR: WHERE ciudad = 'Guadalajara' OR ciudad = 'CDMX'.
Error 4: No usar paréntesis al mezclar AND y OR
SQL evalúa AND antes que OR, igual que en matemáticas el producto va antes que la suma. Si no pones paréntesis, los resultados pueden sorprenderte. Ponlos siempre que mezcles los dos operadores.
Error 5: Poner WHERE antes de FROM
El orden correcto es SELECT → FROM → WHERE. Si inviertes FROM y WHERE, SQL regresa un error de sintaxis inmediatamente.
Una Consulta Completa de Ejemplo
Vamos a juntar todo. Imagina que eres analista de datos en una empresa distribuidora de Bimbo. Necesitas ver los empleados de la ciudad de Monterrey que ganan entre $15,000 y $25,000 y que no pertenecen al departamento de "administración":
SELECT nombre, ciudad, salario, departamento
FROM empleados
WHERE ciudad = 'Monterrey'
AND salario >= 15000
AND salario <= 25000
AND NOT departamento = 'administracion';
Resultado simulado:
nombre ciudad salario departamento
--------------- ----------- --------- ------------
Luisa Mendoza Monterrey $18,500 Logística
Roberto Salas Monterrey $22,000 Producción
Ana Gutiérrez Monterrey $15,800 Distribución
Con cuatro condiciones y AND, tienes un filtro muy preciso. SQL revisó cada fila de la tabla y solo dejó pasar las que cumplen los cuatro criterios al mismo tiempo.
La Regla de Oro del Filtrado
WHERE no cambia los datos: solo decide cuáles filas ves en pantalla.
Eso significa que puedes filtrar sin miedo. Si buscas empleados con salario mayor a $20,000, los demás registros no desaparecen de la base de datos. Solo se quedan fuera de esa consulta específica. Tus datos están seguros.