25 - Operadores lógicos (and - or - not)


Primer problema:

Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Elimine la tabla y créela con la siguiente estructura:

 drop table medicamentos;
 create table medicamentos(
  codigo number(5),
  nombre varchar2(20),
  laboratorio varchar2(20),
  precio number(5,2),
  cantidad number(3),
  primary key(codigo)
 );

3- Ingrese algunos registros:

 insert into medicamentos values(100,'Sertal','Roche',5.2,100);
 insert into medicamentos values(102,'Buscapina','Roche',4.10,200);
 insert into medicamentos values(205,'Amoxidal 500','Bayer',15.60,100);
 insert into medicamentos values(230,'Paracetamol 500','Bago',1.90,200);
 insert into medicamentos values(345,'Bayaspirina','Bayer',2.10,150); 
 insert into medicamentos values(347,'Amoxidal jarabe','Bayer',5.10,250); 

4- 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)

5- Recupere los medicamentos cuyo laboratorio sea "Roche" o cuyo precio sea menor a 5 (4 registros)

6- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad sea=100. Luego muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad NO sea=100

7- Recupere los nombres de los medicamentos cuyo precio esté entre 2 y 5 inclusive (2 registros)

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

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

10- Muestre todos los registros para verificar el cambio.

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

Ver solución

 drop table medicamentos;
 create table medicamentos(
  codigo number(5),
  nombre varchar2(20),
  laboratorio varchar2(20),
  precio number(5,2),
  cantidad number(3),
  primary key(codigo)
 );

 insert into medicamentos values(100,'Sertal','Roche',5.2,100);
 insert into medicamentos values(102,'Buscapina','Roche',4.10,200);
 insert into medicamentos values(205,'Amoxidal 500','Bayer',15.60,100);
 insert into medicamentos values(230,'Paracetamol 500','Bago',1.90,200);
 insert into medicamentos values(345,'Bayaspirina','Bayer',2.10,150); 
 insert into medicamentos values(347,'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 laboratorio='Bayer' and
  not cantidad=100;

 select * from medicamentos
  where not laboratorio='Bayer' and
  cantidad=100;

 select nombre from medicamentos
  where precio>=2 and
  precio <=5;

 delete from medicamentos
  where laboratorio='Bayer' and
  precio>10;

 update medicamentos set cantidad=200
  where laboratorio='Roche' and
  precio>5;

 select *from medicamentos;

 delete from medicamentos
  where laboratorio='Bayer' or
  precio<3;

 

Segundo problema:

Trabajamos con la tabla "peliculas" de un video club que alquila películas en video.

1- Elimine la tabla y créela con la siguiente estructura:

  drop table peliculas;

 create table peliculas(
  codigo number(4),
  titulo varchar2(40) not null,
  actor varchar2(20),
  duracion number(3),
  primary key (codigo)
 );

3- Ingrese algunos registros:

 insert into peliculas
  values(1020,'Mision imposible','Tom Cruise',120);
 insert into peliculas
  values(1021,'Harry Potter y la piedra filosofal','Daniel R.',180);
 insert into peliculas
  values(1022,'Harry Potter y la camara secreta','Daniel R.',190);
 insert into peliculas
  values(1200,'Mision imposible 2','Tom Cruise',120);
 insert into peliculas
  values(1234,'Mujer bonita','Richard Gere',120);
 insert into peliculas
  values(900,'Tootsie','D. Hoffman',90);
 insert into peliculas
  values(1300,'Un oso rojo','Julio Chavez',100);
 insert into peliculas
  values(1301,'Elsa y Fred','China Zorrilla',110);

4- Recupere los registros cuyo actor sea "Tom Cruise" o "Richard Gere" (3 registros)

5- Recupere los registros cuyo actor sea "Tom Cruise" y duración menor a 100 (ninguno cumple ambas condiciones)

6- Recupere los nombres de las películas cuya duración se encuentre entre 100 y 120 minutos(5 registros)

7- Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya duración sea 180 (1 registro afectado)

8- Recupere todos los registros para verificar la actualización anterior

9- 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)


Ver solución
  drop table peliculas;

 create table peliculas(
  codigo number(4),
  titulo varchar2(40) not null,
  actor varchar2(20),
  duracion number(3),
  primary key (codigo)
 );

 insert into peliculas
  values(1020,'Mision imposible','Tom Cruise',120);
 insert into peliculas
  values(1021,'Harry Potter y la piedra filosofal','Daniel R.',180);
 insert into peliculas
  values(1022,'Harry Potter y la camara secreta','Daniel R.',190);
 insert into peliculas
  values(1200,'Mision imposible 2','Tom Cruise',120);
 insert into peliculas
  values(1234,'Mujer bonita','Richard Gere',120);
 insert into peliculas
  values(900,'Tootsie','D. Hoffman',90);
 insert into peliculas
  values(1300,'Un oso rojo','Julio Chavez',100);
 insert into peliculas
  values(1301,'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;

 select titulo from peliculas
  where duracion>=100 and
  duracion<=120;

 update peliculas set duracion=200
  where actor='Daniel R.' and
  duracion=180;

 select *from peliculas;

 delete from peliculas
  where not actor='Tom Cruise' and
  duracion<=100;

Retornar