You are here
Operadores Lógicos MySql (AND – OR – NOT) Sin categoría 

Operadores Lógicos MySql (AND – OR – NOT)

Operadores Lógicos MySql (AND – OR – NOT)

 

Hasta  el  momento,  hemos  aprendido  a  establecer  una  condición  con  “WHERE”  utilizando operadores relacionales. Podemos establecer más de una condición con la cláusula “WHERE”, para ello aprenderemos los operadores lógicos.

 

Son los siguientes:

 

– AND, significa “y”,

– OR, significa “y/o”,

– XOR, significa “o”, exclusivo

– NOT, significa “no”, invierte el resultado

– (), paréntesis.

 

 

 

Los operadores lógicos se usan para combinar condiciones.

 

Queremos recuperar todos los registros cuyo proveedor sea igual a “prove1” y cuyo pago no supere los 3000 bolívares, para ello necesitamos 2 condiciones:

 

SELECT * FROM proveedores WHERE (nombre='provee1′) AND (pago<=3000);

 

Los registros recuperados en una sentencia que une 2 condiciones con el operador “AND”, cumplen con las 2 condiciones.

 

Queremos ver los proveedores cuyo nombre sea “provee2” y/o cuya dirección sea “Maracaibo”:

 

SELECT * FROM proveedores WHERE nombre='provee2′ OR direccion='Maracibo’;

 

En la sentencia anterior usamos el operador “OR”, indicamos que recupere los proveedores en los cuales el valor del campo “nombre” sea “provee2” y/o el valor del campo “direccion” sea “Maracaibo”, es decir, seleccionará los registros que cumplan con la primera condición, con la segunda condición o con ambas condiciones.

 

Los registros recuperados con una sentencia que une 2 condiciones con el operador “OR”, cumplen

1 de las condiciones o ambas.

 

Queremos ver los proveedores cuyo nombre sea “provee3” o cuya dirección sea “Porlamar”:

 

SELECT * FROM proveedores WHERE (nombre='provee3′) XOR (direccion='Porlamar’);

 

En la sentencia anterior usamos el operador “XOR”, indicamos que recupere los proveedores en los cuales el valor del campo “nombre” sea “provee3” o el valor del campo “direccion” sea “Porlamar”, es decir, seleccionará los registros que cumplan con la primera condición o con la segunda condición pero no los que cumplan con ambas condiciones. Los registros recuperados con una sentencia que une 2 condiciones con el operador “XOR”, cumplen 1 de las condiciones, no ambas.

 

Queremos recuperar los proveedores que no cumplan la condición dada, por ejemplo, aquellos cuya dirección NO sea “Porlamar”:

 

SELECT * FROM proveedores WHERE NOT (direccion='Porlamar’);

 

El operador “NOT” invierte el resultado de la condición a la cual antecede.

 

Los registros recuperados en una sentencia en la cual aparece el operador “NOT”, no cumplen con la condición a la cual afecta el “NO”.

Los paréntesis se usan para encerrar condiciones, para que se evalúen como una sola expresión. Cuando explicitamos varias condiciones con diferentes operadores lógicos (combinamos “AND”,

“OR”) permite establecer el orden de prioridad de la evaluación; además permite diferenciar las

expresiones más claramente.

 

Por ejemplo, las siguientes expresiones devuelven un resultado diferente:

 

SELECT * FROM proveedores WHERE (nombre='provee1′) OR (direccion='Maracaibo’ AND

pago<3000);

 

 

 

 

 

 

SELECT * FROM proveedores WHERE (nombre='provee2′ OR direccion='Valencia’) AND

(pago<3000);

 

Si bien los paréntesis no son obligatorios en todos los casos, se recomienda utilizarlos para evitar confusiones.

 

El orden de prioridad de los operadores lógicos es el siguiente: “NOT” se aplica antes que “AND” y

“AND” antes que “OR”, si no se especifica un orden de evaluación mediante el uso de paréntesis.

 

El orden en el que se evalúan los operadores con igual nivel de precedencia es indefinido, por ello se recomienda usar los paréntesis.

 

29.- Otros operadores relacionales (BETWEEN – IN)

 

Hemos visto los operadores relacionales:

 

= (igual), <> (distinto), > (mayor), < (menor), >= (mayor o igual), <= (menor o igual), is NULL/IS NOT NULL (si un valor es NULL o no).

 

Existen otros que simplifican algunas consultas:

 

Para recuperar de nuestra tabla “empleados” los registros que tienen tiempo de servicio mayor o igual a 5 años y menor o igual a 9 años, usamos 2 condiciones unidas por el operador lógico “AND”:

 

SELECT * FROM empleados WHERE tiempo_servicio>=5 AND tiempo_servicio<=9;

 

Podemos usar “BETWEEN”:

 

SELECT * FROM empleados WHERE tiempo_servicio BETWEEN 5 AND 9;

 

“BETWEEN” significa “entre”. Averiguamos si el valor de un campo dado (precio) está entre los valores mínimo y máximo especificados (5 y 9 respectivamente).

 

Si agregamos el operador “NOT” antes de “BETWEEN” el resultado se invierte.

 

Para recuperar los empleados cuyo nombre sea ‘Mario’ o ‘Ana’ usamos 2 condiciones:

 

SELECT * FROM empleados WHERE nombre='Mario’ OR nombre='Ana’;

 

Podemos usar “IN”:

 

SELECT * FROM empleados WHERE nombre IN(‘Mario’,'Ana’);

 

Con “IN” averiguamos si el valor de un campo dado (nombre) está incluido en la lista de valores especificada (en este caso, 2 cadenas).

 

Para recuperar los empleados cuyo nombre no sea ‘Mario’ ni ‘Ana’ usamos:

 

SELECT * FROM empleados WHERE nombre<>'Mario’ AND nombre<>'Ana’;

 

También podemos usar “IN”:

 

SELECT * FROM empleados WHERE nombre NOT IN (‘Mario’,'Ana’);

 

Con “IN” averiguamos si el valor del campo está incluido en la lista, con “NOT” antecediendo la condición, invertimos el resultado.


 

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Related posts

Comments

Leave a Comment


*