Volver a la lista de artículos Artículos
Lectura de 4 minutos

Uso de los operadores AND, OR y NOT en SQL

ANDLos operadores AND, OR y NOT son operadores lógicos importantes en SQL. Le ayudan a combinar las condiciones utilizadas para filtrar los registros. Se suelen utilizar junto con las cláusulas WHERE o HAVING. Además, este tema es una pregunta bastante común en las entrevistas de trabajo de SQL.

Para ayudarte a entender completamente estos operadores, te llevaré a través de algunos ejemplos, explicando completamente la sintaxis y el propósito de cada uno. Practicar usando ejemplos como estos es uno de los mejores métodos para aprender SQL.

Para nuestros ejemplos, imagina que operamos y somos dueños de un gimnasio con diferentes ubicaciones alrededor de los Estados Unidos. Cuando la gente se inscribe, nos da alguna información básica. Esta información se almacena en nuestra tabla members que contiene un identificador único para cada socio, junto con su nombre y apellidos, su edad, la fecha en que se inscribió en el gimnasio y la ubicación del mismo.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

Sintaxis de SQL AND

La sintaxis para el operador AND es:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 AND condition_2 AND condition_n

Cuando se combinan varias condiciones utilizando el operador AND, se devolverán todas las filas que cumplan todas las condiciones dadas.

Ahora es el momento de aplicar el operador AND a nuestro escenario de gimnasio. Supongamos que queremos encontrar todos los socios menores de 50 años que viven en Los Ángeles. ¿Cómo podemos conseguirlo mediante una consulta SQL?

SELECT * 
FROM members 
WHERE Age < 50 AND Location = 'Los Angeles';
idFirstNameLastNameAgeDateJoinedLocation
4AngelinaJolie452019-04-02Los Angeles

Age Aunque tenemos dos socios con la dirección Location de Los Ángeles, sólo uno de ellos es menor de 50 años. Recuerda que al utilizar el operador SQL AND, deben cumplirse ambas condiciones para que se devuelva un registro.

Sintaxis del operador SQL OR

La sintaxis del operador OR es:

SELECT column_1, column_2, … column_n
FROM table
WHERE condition_1 OR condition_2 OR condition_n

Si se combinan varias condiciones con el operador OR, se devolverán todas las filas que cumplan alguna de las condiciones dadas. Podemos aplicar esto a nuestra tabla members escribiendo la siguiente consulta:

SELECT * 
FROM members 
WHERE Location = 'Los Angeles' OR LastName = 'Hanks'

Con esta consulta, buscamos recuperar filas en las que el LastName sea Hanks o el Location sea Los Ángeles. La ejecución de esta consulta arroja el siguiente resultado:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles

Observe que nuestro miembro Tom Hanks está incluido en el conjunto de resultados aunque su gimnasio Location no sea Los Ángeles. Esto se debe a que cumple la segunda condición que especificamos: su apellido es "Hanks". Recuerde: al utilizar el operador SQL OR, se devolverán todas las filas que cumplan alguna de las condiciones dadas.

Sintaxis de SQL NOT

La sintaxis del operador NOT es:

SELECT column_1, column_2, … column_n
FROM table
WHERE NOT condition 

Cuando se combinan varias condiciones utilizando el operador NOT, se devolverán todas las filas que no cumplan las condiciones dadas.

Podemos utilizar este operador con nuestro ejemplo del gimnasio de varias maneras útiles. ¿Qué pasaría si quisiéramos encontrar todos los socios que están fuera de Los Ángeles? Utilizando el operador NOT, podemos escribir simplemente:

SELECT * 
FROM members 
WHERE NOT Location = 'Los Angeles'

La ejecución de esta consulta da como resultado el siguiente conjunto de datos:

idFirstNameLastNameAgeDateJoinedLocation
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
5MerylStreep712014-03-21Manhattan

Se puede ver claramente el efecto que ha tenido el operador NOT. No se devuelve ningún miembro que tenga su Location fijado en Los Ángeles.

Combinación de los operadores AND, OR y NOT

Hay ciertas situaciones en las que puede ser necesario combinar estos operadores para especificar los datos exactos que desea.

Aquí está nuestra tabla members es el conjunto de datos que vamos a consultar en este ejemplo.

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
2BradPitt562018-06-15San Francisco
3TomHanks642017-02-27San Diego
4AngelinaJolie452019-04-02Los Angeles
5MerylStreep712014-03-21Manhattan

Supongamos que queremos obtener los datos de los miembros que cumplen unos criterios muy específicos. Queremos miembros que sean

  • Mayores de 50 años.
  • Que se encuentren en Los Ángeles o Manhattan.

Podemos conseguirlo escribiendo la siguiente consulta SQL:

SELECT * FROM members
WHERE AGE > 50 AND (Location='Los Angeles' OR Location='Manhattan')

Fíjese en que hemos utilizado paréntesis/corchetes para agrupar nuestros operadores. Hacemos esto para que SQL sepa exactamente cómo interpretar el orden de nuestros operadores. El resultado de esta consulta es:

idFirstNameLastNameAgeDateJoinedLocation
1WillSmith522020-08-23Los Angeles
5MerylStreep712014-03-21Manhattan

Puede ver cómo la combinación de los operadores AND, OR, y NOT de diferentes maneras puede ayudarnos a filtrar con precisión nuestros datos.

Amplíe su SQL con los operadores AND, OR y NOT

Ahora tiene la capacidad de recuperar los datos exactos que desea. Esto abre muchas posibilidades.

Puede utilizar la cláusula WHERE junto con AND, OR y NOT, lo que le permitirá ser muy preciso con sus consultas SQL. La lectura de nuestras publicaciones en el blog es una buena manera de aprender la sintaxis de SQL y ver los diferentes escenarios en los que SQL puede ser útil. Sin embargo, si quieres una guía realmente completa para escribir consultas, considera nuestro SQL para principiantes curso, que le proporcionará mucha práctica.