Generalidades
Los
operadores
lógicos o conectores se utilizan cuando se arma una cláusula WHERE, allí estamos creando una condición que hará las veces de
filtro
para devolvernos dentro de la consulta los
registros
deseados, es decir solamente aquellos que cumplan la mencionada condición que coloquemos en la cláusula WHERE.
Para hace 1 sola condición dentro del
WHERE
solo basta con escribir el campo y el valor que quiero que tome y allí quedaría lista mi condición.
Una sintaxis de ejemplo sería la siguiente:
SELECT * FROM [nombre_de_tabla] WHERE [campo a filtrar 1] = 'VALOR_DESEADO_1' |
¿Pero que sucede si quiero que se cumpla la condición que explicamos en el ejemplo anterior y a la vez también una segunda condición, es decir 2
condiciones
simultáneamente?
La respuesta es conectando ambas
condiciones
con la palabra reservada AND que en inglés significa "Y", con lo cual de esta forma lograremos que se obteng como resultado los
registros
que si y solo sí cumplan las dos condiciones.
SELECT * FROM [nombre_de_tabla] WHERE [campo1] = valor1 AND [campo2] = valor2 ... AND [campo_n] = valor_n |
Ahora bien si llegase el caso que quiero llegar a un resultado con múltiples condiciones, es decir 2 o más, pero que se cumpla al menos una de ellas, se utiliza la palabra reservada OR que en inglés significa "O" y su utilización con un ejemplo sería:
SELECT * FROM [nombre_de_tabla] WHERE [campo a filtrar 1] = 'VALOR_DESEADO_1' OR [campo a filtrar 2] = 'VALOR_DESEADO_2' OR [campo a filtrar 3] = 'VALOR_DESEADO_3' |
A diferencia del AND, para el caso del OR nos podemos encontrar con la situación que quisiéramos filtrar sobre un mismo campo dos o más veces, cosa que con el AND no se podría, es decir un mismo campo no podría tomar un valor "Y" otro valor a la vez, pero con el OR esto si es posible, veamos un ejemplo práctico donde quiero de un listado de personas, las que sean de 25 años de edad o menos, y aquellas que tengan 40 años de edad o más, a lo cual una forma de escribirlo sería así:
SELECT * FROM [personas] WHERE [edad] <= 25 OR [edad] >=40 |
Por último también podemos combinar AND y OR donde obtendremos las propiedades de cada uno, utilizando los paréntesis para conseguir el filtro deseado y donde tendremos que tener cuidado porque podemos incurrir en agrupar condiciones que nos den un resultado que no es el esperado, por ejemplo siguien con el ejemplo anterior ahora deseo las personas que tienen entre 25 y 40 años, y además pretendo que esas personas que midan menos de 1.70 m. ó bien midan más de 1.80 m., y una forma de escribirlo sería así:
SELECT *
FROM
[personas] WHERE ([edad] > 25 AND [edad] < 40) AND ([altura] < 1.70 OR [altura] > 1.80) |
Donde vemos que los paréntesis nos indican que deben cumplirse ambos grupos de condiciones a la vez, la primer de las edades, y a su vez la segunda de las alturas, pero es aquí donde se podría haber caído en un error, que sería no agrupar las condiciones con los paréntesis, dejando la que tenga un OR libre de paréntesis y ocurriría lo siguiente:
SELECT *
FROM
[personas] WHERE ([edad] > 25 AND [edad] < 40) AND [altura] < 1.70 OR [altura] > 1.80 |
Con lo cual obtendríamos como resultado aquellas personas que por un lado cumplan la condición de la edad y a su vez tengan menos de 1.70 de altura, ya que el AND agrupa dichas
condiciones,
pero ahora sin los segundos paréntesis se sumarán todas las personas que midan más de 1.80 m. sin importar la edad, con lo cual la consulta arrojará un resultado diferente y con más
registros
que bien escrita del modo anterior.