25 - Operadores lógicos (and - or - not) |
Trabaje con la tabla llamada "medicamentos" de una farmacia. 1- Cree la tabla con la siguiente estructura: create table medicamentos( codigo serial, nombre varchar(20), laboratorio varchar(20), precio decimal(5,2), cantidad smallint, primary key(codigo) ); 2- Ingrese algunos registros: insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Paracetamol 500','Bago',1.90,200); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Bayaspirina','Bayer',2.10,150); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Amoxidal jarabe','Bayer',5.10,250); 3- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea 'Roche' y cuyo precio sea menor a 5 (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 condición 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)Ver solución
drop table if exists medicamentos; create table medicamentos( codigo serial, nombre varchar(20), laboratorio varchar(20), precio decimal(5,2), cantidad smallint, primary key(codigo) ); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Paracetamol 500','Bago',1.90,200); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Bayaspirina','Bayer',2.10,150); insert into medicamentos (nombre,laboratorio,precio,cantidad) values('Amoxidal jarabe','Bayer',5.10,250); select codigo,nombre from medicamentos where laboratorio='Roche' and precio<5; select * from medicamentos where laboratorio='Roche' or precio<5; select * from medicamentos where not laboratorio='Bayer' and cantidad=100; select * from medicamentos where laboratorio='Bayer' and not cantidad=100; delete from medicamentos where laboratorio='Bayer' and precio>10; update medicamentos set cantidad=200 where laboratorio='Roche' and precio>5; delete from medicamentos where laboratorio='Bayer' or precio<3;
Trabajamos con la tabla "peliculas" de un video club que alquila películas en video. 1- Créela con la siguiente estructura: create table peliculas( codigo serial, titulo varchar(40) not null, actor varchar(20), duracion smallint, primary key (codigo) ); 2- Ingrese algunos registros: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Mujer bonita','Richard Gere',120); insert into peliculas (titulo,actor,duracion) values('Tootsie','D. Hoffman',90); insert into peliculas (titulo,actor,duracion) values('Un oso rojo','Julio Chavez',100); insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',110); 3- Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere" (3 registros) 4- Recupere los registros cuyo actor sea "Tom Cruise" y duración menor a 100 (ninguno cumple ambas condiciones) 5- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya duración sea 180 (1 registro afectado) 6- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea mayor o igual a 100 (2 registros eliminados)
drop table if exists peliculas; create table peliculas( codigo serial, titulo varchar(40) not null, actor varchar(20), duracion smallint, primary key (codigo) ); insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Mujer bonita','Richard Gere',120); insert into peliculas (titulo,actor,duracion) values('Tootsie','D. Hoffman',90); insert into peliculas (titulo,actor,duracion) values('Un oso rojo','Julio Chavez',100); insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',110); select * from peliculas where actor='Tom Cruise' or actor='Richard Gere'; select * from peliculas where actor='Tom Cruise' and duracion<100; update peliculas set duracion=200 where actor='Daniel R.' and duracion=180; delete from peliculas where not actor='Tom Cruise' and duracion>=100;