En esta sección veremos los operadores lógicos AND, OR y NOT. Los dos primeros sirven para combinar dos o más condiciones en la cláusula WHERE. Hasta el momento sólo hemos usado una sola condición en el WHERE, ahora vamos a ver como combinar más de una con AND y OR.
Operadores Lógicos en SQL.
A veces necesitamos que una consulta cumpla con más de una condición, como por ejemplo que los valores de una columna cumplan una serie de valores o que dos o más columnas cumplan ciertas condiciones. Es ahí donde entran los operadores lógicos.
Operador AND (Y).
Sintaxis: condición AND condición
El operador AND combinará los valores booleanos (verdadero o falso) que regresan las condiciones y regresará a su vez verdadero o falso una vez evaluadas tales condiciones. El operador AND no sólo se limita a combinar dos condiciones, puede combinar más de dos y sólo regresará verdadero cuando todas las condiciones se cumplan o sean verdaderas.
Escribe, ejecuta y analiza los resultados del siguiente ejemplo:
La sentencia anterior filtra sólo los productos con “id_marca” igual a 11. Observa todos los resultados y verás que esos productos tiene varias “id_categoria”: 3, 618, 583. Si quisiéramos mostrar solamente los productos que pertenecen a la categoría 618 de esa misma marca 11, tendríamos que añadir otra condición. Escribe, ejecuta y analiza los resultados de la siguiente sentencia:
Como verás ahora son dos condiciones combinadas con el operador AND, recuerda que sólo las filas o registros que cumplan las dos condiciones, es decir que ambas condiciones resulten ciertas o verdaderas, aparecerán en los resultados de salida. Sólo aparecerán los registros que los valores en sus columnas “id_marca” e “id_categoria” sean 11 y 618 respectivamente.
Operador OR (O).
Sintaxis: condición OR condición
Con el operador OR a diferencia del AND, basta conque una de las dos condiciones se cumpla para que de como resultado verdadero. Sólo regresará falso cuando ambas condiciones sean falsas. Escribe la misma sentencia anterior pero reemplazando el operador AND por el operador OR y ve que pasa:
Verás que el filtro ahora arroja más filas que cumplen las condiciones. ¿Sabes por qué? Si observas verás que dentro de los resultados no sólo aparecen productos de la marca 11 ni tampoco sólo categorías con valor de 618. Aparecen todas las filas que tienen valor 11 en su marca o valor 618 en su categoría. ¿Complejo? Imaginemos el proceso que hace SQL, SQL lee una fila y checa la primera condición: ¿la columna “id_marca” tiene valor a 11? Si es verdadero, la manda mostrar a resultados y ya no checa la segunda condición ya que esta usando el operador OR. Con el operador OR basta que una de las condiciones sea verdadera para que la combinación de ambas de como resultado verdadero.
¿Que pasa si la fila en su columna “id_marca” no tiene el valor 11? Bueno, en este caso checa la siguiente condición: ¿”id_categoria” es igual a 618? Si es verdadero, la muestra en los resultados sin importar que la primera condición hay salido falsa. Recuerda, basta que una de las condiciones sea verdadera para que la combinación de ambas sea verdadera. Todas aquellas filas en las que ambas condiciones resulten falsas, no se mostrarán en los resultados.
Revisa los resultados y confirma que todas las filas tienen ya sea el valor 11 en “id_marca” o valor 618 en “id_categoria”. ¿Quedó más claro? Deja tus comentarios.
Operador NOT (NO).
Sintaxis: NOT condición
El operador NOT niega el resultado de la evaluación de una condición o combinación de condiciones. Es decir si el resultado de la condición es verdadera, la torna falsa, y si el resultado de la condición es falsa, la torna verdadera.
Vuelve a ejecutar la primera sentencia SQL que ejecutamos en esta sección donde obteníamos todos los productos con el valor 11 en su columna “id_marca”. Nos dieron como resultado 36 filas. Ahora escribe, ejecuta y analiza los resultados de la siguiente sentencia:
Si observas la sentencia, cambiamos el operador “=” (igual) por el operador “<>” (diferente o no igual a) de la condición pero antepusimos el operador NOT (NO) antes de la condición. Primeramente SQL evalúa ¿”id_marca” es diferente a 11? Si es verdadero, es decir, si el valor es cualquier otro valor diferente de 11 la condición se evalúa previamente como verdadera, pero como la condición esta precedida por el operador NOT (NO) entonces cambia el valor resultante a falso y dicha fila no aparecerá en los resultados.
En caso contrario, que “id_marca” de la fila evaluada si sea 11, la condición evaluaría previamente a falsa, pero como va precedida por el operador NOT, entonces la evaluación resultante cambiaría a verdadero y la fila aparecería en los resultados. Puedes dejar un comentario si no te pareció clara la explicación.
En la siguiente sección veremos algunas funciones SQL que podemos usar en la instrucción SELECT.
¡Hasta la próxima!