Contenido de esta guía
Qué significan AND, OR y NOT
AND, OR y NOT combinan o niegan condiciones booleanas. En un WHERE, una fila se conserva cuando la condición completa resulta verdadera.
AND: exige que se cumplan las dos condiciones.OR: basta con que se cumpla al menos una.NOT: niega el resultado de una condición.
SQL no trabaja únicamente con verdadero y falso: cuando interviene NULL, una comparación puede producir un tercer estado lógico, desconocido (UNKNOWN). Esa diferencia importa al combinar filtros.
Sintaxis mínima
SELECT columnas
FROM tabla
WHERE condicion_a AND condicion_b;
SELECT columnas
FROM tabla
WHERE condicion_a OR condicion_b;
SELECT columnas
FROM tabla
WHERE NOT condicion;La precedencia puede cambiar el filtro
NOT se evalúa antes que AND, y AND antes que OR. Aunque conozcas esa precedencia, usa paréntesis cuando varias condiciones expresen una regla de negocio: reducen ambigüedad y hacen la consulta más fácil de revisar.
WHERE (categoria = 'Accesorios' OR categoria = 'Audio')
AND stock > 0;Lee los paréntesis como una frase. Primero acepta Accesorios o Audio; después exige stock positivo a cualquiera de los dos grupos.
Ejemplo guiado: combinar categoría y stock
| nombre | categoria | stock |
|---|---|---|
| Teclado | Accesorios | 12 |
| Ratón | Accesorios | 0 |
| Altavoz | Audio | 7 |
| Auriculares | Audio | 0 |
| Monitor | Pantallas | 4 |
SELECT nombre, categoria, stock
FROM productos
WHERE (categoria = 'Accesorios' OR categoria = 'Audio')
AND stock > 0
ORDER BY nombre;| nombre | categoria | stock |
|---|---|---|
| Altavoz | Audio | 7 |
| Teclado | Accesorios | 12 |
Qué cambia cuando aparece NULL
Una comparación como descuento > 0 no es verdadera ni falsa cuando descuento vale NULL: su resultado es desconocido. Negarla con NOT tampoco convierte ese caso en verdadero.
WHERE descuento IS NULL
OR descuento <= 0;Si necesitas tratar los valores ausentes como un caso propio, expresalo con IS NULL o IS NOT NULL; no confíes en una comparación ordinaria.
Errores frecuentes
La consulta puede ser sintácticamente válida y devolver un conjunto distinto del que imaginabas. Añade paréntesis alrededor de las reglas que deban evaluarse juntas.
Las comparaciones ordinarias con NULL no producen verdadero o falso. Usa IS NULL y IS NOT NULL.
Práctica: clientes de Madrid o Valencia
Muestra clientes activos de dos ciudades
Con estos datos, devuelve los clientes cuyo estado sea activo y cuya ciudad sea Madrid o Valencia. Ordena por nombre.
Pista 1
Agrupa las dos ciudades dentro de paréntesis.
Pista 2
La condición de estado debe aplicarse a cualquiera de las dos ciudades.
Ver solución explicada
SELECT nombre, ciudad
FROM clientes
WHERE estado = 'activo'
AND (ciudad = 'Madrid' OR ciudad = 'Valencia')
ORDER BY nombre;Los paréntesis crean primero el conjunto Madrid/Valencia. AND exige después que cada fila seleccionada esté activa.
Compatibilidad entre motores
AND, OR y NOT son operadores habituales y portables. MySQL también documenta operadores alternativos como && o !, pero usarlos reduce portabilidad. Para material educativo y consultas que deban moverse entre motores, preferí las palabras clave SQL.
Qué debes recordar
ANDexige condiciones simultáneas;ORofrece alternativas;NOTniega.- Los paréntesis hacen explícita la intención cuando mezclas operadores.
- Con
NULLpuede aparecer el estado UNKNOWN; trátalo de forma explícita.