En esta ocasión te voy a mostrar el uso de los operadores lógicos de SQL. AND, OR y NOT.
Hasta este punto en el curso, solo lo habíamos utilizado con condiciones simples (una condición). Al combinar múltiples condiciones, es posible precisar aún más los resultados que obtenemos de una consulta. En este capítulo, aprenderemos cómo usar los operadores AND y OR para construir consultas más complejas con múltiples condiciones.
Para los ejemplos de consultas, voy a utilizar las tablas que vienen con la instalación de MySQL (world y sakila).
Operadores lógicos: AND
El operador AND se usa para combinar múltiples condiciones en una consulta. Estas deben ser verdaderas para que una fila sea incluida en el resultado. Veamos un ejemplo de uso práctico:
SELECT Name, Population, Continent FROM Country WHERE Population > 1000000 AND Continent = "Asia" ORDER BY Population DESC;
Esto nos da un resultado de países que tienen más de 1 millón de habitantes y que además, pertenecen a Asia.
Operadores lógicos: OR
El operador OR se utiliza para combinar múltiples condiciones en una consulta, y al menos una de las condiciones debe ser verdadera para que una fila sea incluida en el resultado. En este caso, la condición no es tan restrictiva.
Probemos la misma consulta, pero con OR. En este caso, nos va a devolver las filas de los países que tengan más de 1 millón de habitantes y todos los de Asia, independientemente de si tienen 1 millón o no.
SELECT Name, Population, Continent FROM Country WHERE Population > 1000000 OR Continent = "Asia" ORDER BY Population DESC;
Combinaciones entre OR y AND
Es posible hacer combinaciones de ambos operadores para llegar a realizar consultas más complejas todavía. Además, podrás encadenar más de dos condiciones.
SELECT store_id, first_name, last_name, active FROM customer WHERE (active = 1 AND store_id =2) OR (first_name = "ANDREA" OR first_name = "ANGEL") ORDER BY store_id ASC, first_name ASC
Lo primero, se aplica la condición (active = 1 AND store_id =2). En este caso, se pide que los clientes estén activos (1, 0 sería inactivo) y que además, sean clientes de la tienda con id 2.
Después, decimos con OR que puede sacar también resultados de la siguiente condición: (first_name = «ANDREA» OR first_name = «ANGEL»). Independientemente de la condición anterior, saca las filas donde el nombre sea igual a «ANDREA» o también, donde el nombre sea igual a «ANGEL».
Es por eso, que tenemos en los resultados, las dos primeras filas, que no son de la tienda 2, son de la 1, ya que la condición era el nombre en este paréntesis y no el ID de tienda.
Como puedes ver, se puede complicar mucho el tema de las consultas. Ves haciendo pruebas con diferentes consultas y verás como le pillas el truco.
Operadores lógicos: NOT
El operador NOT se utiliza para negar o invertir el valor de una expresión booleana. Básicamente, es para pedir que no muestre algo en los resultados.
SELECT Name, Population, Continent FROM Country WHERE NOT Population > 1000000 AND NOT continent = "Asia" ORDER BY Population DESC;
Esta consulta muestra todos los países que no tengan una población superior a 1 millón y además, que el continente no sea «Asia».
Espero que con estos ejemplos te quede claro el uso de los operadores lógicos de SQL. Por supuesto, los iré usando en muchos más ejemplos de otros temas.
No te pierdas nada del curso Máster en Python.