Está en la página 1de 5

TALLER 13 BASE DE DATOS

CORAL CASTILLO GIOVANNY FRANCISCO


2014-07-28
Operadores lgicos (and - or - not)
Hasta el momento, hemos aprendido a establecer una condicin con "where" utilizando
operadores relacionales. Podemos establecer ms de una condicin con la clusula "where", para
ello aprenderemos los operadores lgicos.
Son los siguientes:
- and, significa "y",
- or, significa "y/o",
- not, significa "no", invierte el resultado
- (), parntesis
Los operadores lgicos se usan para combinar condiciones.
Si queremos recuperar todos los libros cuyo autor sea igual a "Borges" y cuyo precio no supere los
20 pesos, necesitamos 2 condiciones:
select * from libros
where (autor='Borges') and
(precio<=20);
Los registros recuperados en una sentencia que une 2 condiciones con el operador "and", cumplen
con las 2 condiciones.
Queremos ver los libros cuyo autor sea "Borges" y/o cuya editorial sea "Planeta":
select * from libros
where autor='Borges' or
editorial='Planeta';
En la sentencia anterior usamos el operador "or"; indicamos que recupere los libros en los cuales
el valor del campo "autor" sea "Borges" y/o el valor del campo "editorial" sea "Planeta", es decir,
seleccionar los registros que cumplan con la primera condicin, con la segunda condicin 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 recuperar los libros que NO cumplan la condicin dada, por ejemplo, aquellos cuya
editorial NO sea "Planeta":
select * from libros
where not editorial='Planeta';
El operador "not" invierte el resultado de la condicin a la cual antecede.
Los registros recuperados en una sentencia en la cual aparece el operador "not", no cumplen con
la condicin a la cual afecta el "NOT".
Los parntesis se usan para encerrar condiciones, para que se evalen como una sola expresin.
Cuando explicitamos varias condiciones con diferentes operadores lgicos (combinamos "and",
"or") permite establecer el orden de prioridad de la evaluacin; adems permite diferenciar las
expresiones ms claramente.
Por ejemplo, las siguientes expresiones devuelven un resultado diferente:
select * from libros
where (autor='Borges') or
(editorial='Paidos' and precio<20);

select * from libros
where (autor='Borges' or editorial='Paidos') and
(precio<20);
Si bien los parntesis no son obligatorios en todos los casos, se recomienda utilizarlos para evitar
confusiones.
El orden de prioridad de los operadores lgicos es el siguiente: "not" se aplica antes que "and" y
"and" antes que "or", si no se especifica un orden de evaluacin mediante el uso de parntesis.
El orden en el que se evalan los operadores con igual nivel de precedencia es indefinido, por
ello se recomienda usar los parntesis.
Entonces, para establecer ms de una condicin en un "where" es necesario emplear operadores
lgicos. "and" significa "y", indica que se cumplan ambas condiciones; "or" significa "y/o", indica
que se cumpla una u otra condicin (o ambas); "not" significa "no", indica que no se cumpla la
condicin especificada.

Primer problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Cree la tabla con la siguiente estructura:
codigo serial,
nombre varchar(20),
laboratorio varchar(20),
precio decimal(5,2),
cantidad smallint,
primary key(codigo)

2- Ingrese algunos registros:
Ej:
insert into medicamentos (nombre,laboratorio,precio,cantidad)
values('Amoxidal jarabe','Bayer',5.10,250);

3- Recupere los cdigos y nombres de los medicamentos cuyo laboratorio sea 'Roche' y cuyo
precio sea
menor a 5 (al menos 1 registro cumple con ambas condiciones)

4- Recupere los medicamentos cuyo laboratorio sea 'Roche' o cuyo precio sea menor a 5 (4
registros)
Note que el resultado es diferente al del punto 4, hemos cambiado el operador de la sentencia
anterior.

5- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad sea=100 (1
registro)

6- Muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad NO sea=100 (2
registros)
Analice estas 2 ltimas sentencias. El operador "not" afecta a la condicin a la cual antecede, no a
las siguientes. Los resultados de los puntos 6 y 7 son diferentes.

7- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea mayor a 10 (1
registro eliminado)

8- Cambie la cantidad por 200, a todos los medicamentos de "Roche" cuyo precio sea mayor a 5 (1
registro afectado)

9- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3 (3 registros
borrados)

También podría gustarte