29 - Operadores Lógicos (and - or - not) |
Trabaje con la tabla llamada "medicamentos" de una farmacia. 1- Elimine la tabla, si existe. 2- Cree la tabla con la siguiente estructura: create table medicamentos( codigo int unsigned auto_increment, nombre varchar(20), laboratorio varchar(20), precio decimal(5,2) unsigned, cantidad int unsigned, primary key(codigo) ); 3- Visualice la estructura de la tabla "medicamentos". 4- Ingrese los siguientes registros (insert into): 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); 5- Recupere los códigos y nombres de los medicamentos cuyo laboratorio sea 'Roche' y cuyo precio sea menor a 5: select codigo,nombre from medicamentos where laboratorio='Roche' and precio<5; Quedó seleccionado 1 registro, es el único que cumple con ambas condiciones. 6- Recupere los medicamentos cuyo laboratorio sea 'Roche' o cuyo precio sea menor a 5: select * from medicamentos where laboratorio='Roche' or precio<5; Note que la salida es diferente, hemos cambiado el operador de la sentencia anterior. Ahora se recuperaron todos los registros cuyo laboratorio es igual a 'Roche' y todos los registros cuyo precio es menor a 5. Aquellos registros que no cumplieron con la condición 1 (no son de "Roche") ni con la condicion2 (no cuestan menos de 5) no aparecen. 7- Muestre todos los registros que no sean de "Bayer" usando el operador "not". 8- Muestre todos los medicamentos cuyo laboratorio NO sea "Bayer" y cuya cantidad sea=100: select * from medicamentos where not laboratorio='Bayer' and cantidad=100; 9- Muestre todos los medicamentos cuyo laboratorio sea "Bayer" y cuya cantidad NO sea=100: select * from medicamentos where laboratorio='Bayer' and not cantidad=100; Analice estas 2 últimas sentencias. El operador "not" afecta a la condición a la cual antecede, no a las siguientes. Los resultados de estas 2 sentencias son diferentes. 10- Elimine todos los registros cuyo laboratorio sea igual a "Bayer" y su precio sea mayor a 10: delete from medicamentos where laboratorio='Bayer' and precio>10; Sólo 1 registro debe ser eliminado, el que cumple con ambas condiciones. 11- Cambie la cantidad por 200, a todos los medicamentos de "Roche" cuyo precio sea mayor a 5: update medicamentos set cantidad=200 where laboratorio='Roche' and precio>5; Un solo registro fue actualizado porque sólo uno cumplió con las condiciones especificadas. 12- Borre los medicamentos cuyo laboratorio sea "Bayer" o cuyo precio sea menor a 3. Antes veamos cuáles cumplen con la condición, los registros 5 y 6 son de "Bayer, cumplen con la primera condición, los registros 4 y 5 cumplen con la segunda condición, es decir, se borrarán 3 registros: el 4 porque cumple con la segunda condición, el 5 porque cumple con ambas y el 6 porque cumple con la primera. Tipeamos: delete from medicamentos where laboratorio='Bayer' or precio<3;
A) Trabajamos con la tabla "peliculas" de un video club que alquila películas en video. 1- Elimine la tabla, si existe. 2- Créela con la siguiente estructura: -codigo (entero sin signo, autoincrementable), -titulo (cadena de 30), -actor (cadena de 20), -duracion (entero sin signo no mayor a 200), -clave primaria (codigo). 3- Ingrese los siguientes 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); 4- Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere". (3 registros). 5- Recupere los registros cuyo actor sea "Tom Cruise" y "Richard Gere". (ninguno cumple ambas condiciones). 6- 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- Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea mayor o igual a 100: delete from peliculas where not actor='Tom Cruise' and duracion<=100; Deben borrarse 2 registros. B) En una página web se solicitan los siguientes datos para guardar información de sus visitas: nombre, mail, pais. 1- Elimine la tabla "visitas", si existe. 2- Créela con la siguiente estructura: create table visitas ( numero int unsigned auto_increment, nombre varchar(30) not null, mail varchar(50), pais varchar (20), fecha datetime, primary key(numero) ); 3- Ingrese algunos registros: insert into visitas (nombre,mail,pais,fecha) values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10'); insert into visitas (nombre,mail,pais,fecha) values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-10-11 15:45'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-10-12 08:15'); insert into visitas (nombre,mail,pais,fecha) values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-09-12 20:45'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-12 16:20'); insert into visitas (nombre,mail,pais,fecha) values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-15 16:25'); 4- Muestre los datos de las visitas de "Argentina" que hayan ingresado después del mes de septiembre (9): select*from visitas where pais='Argentina' and month(fecha)>9; 5- Elimine todos los registros cuyo pais no sea "Mexico" y que hayan visitado la página antes de las 16 hs.: delete from visitas where pais<>'Mexico' and hour(fecha)<16;