31 - Búsqueda de patrones (like y not like)


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

1- Elimine la tabla, si existe:
 drop table if exists medicamentos;

2- Cree la tabla con la siguiente estructura:
 create table medicamentos(
  codigo int unsigned auto_increment,
  nombre varchar(20) not null,
  laboratorio varchar(20),
  precio decimal(6,2) unsigned,
  cantidad int unsigned,
  primary key(codigo)
);

3- Visualice la estructura de la tabla "medicamentos".

4- Ingrese los siguientes registros:
 insert into medicamentos (nombre, laboratorio,precio)
  values('Sertal gotas','Roche',5.2);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Buscapina','Roche',4.10);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Amoxidal 500','Bayer',15.60);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Paracetamol 500','Bago',1.90);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Bayaspirina','Bayer',2.10); 
 insert into medicamentos (nombre, laboratorio,precio)
  values('Amoxidal jarabe','Bayer',5.10); 
 insert into medicamentos (nombre, laboratorio,precio)
  values('Sertal compuesto','Bayer',5.10); 
 insert into medicamentos (nombre, laboratorio,precio)
  values('Paracetamol 1000','Bago',2.90);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Amoxinil','Roche',17.80);

5- Recupere los medicamentos cuyo nombre comiencen con "Amox":
 select codigo,nombre,laboratorio,precio
  from medicamentos
  where nombre like 'Amox%';
Quedaron 3 registros seleccionados.

6- Recupere los medicamentos "Paracetamol" cuyo precio sea menor a 2:
 select codigo,nombre,laboratorio,precio
  from medicamentos
  where nombre like 'Paracetamol%' and
  precio<2;

7- Busque todos los medicamentos cuyo precio tenga .10 centavos:
 select codigo,nombre,laboratorio,precio
  from medicamentos
  where precio like '%.1%';

8- Muestre todos los medicamentos que no contengan la cadena "compuesto":
 select codigo,nombre,laboratorio,precio
  from medicamentos
  where nombre not like'%compuesto%';

9- Elimine todos los registros cuyo laboratorio contenga la letra "y":
 delete from medicamentos
  where laboratorio like '%y%';

10- Cambie el precio por 5, al "Paracetamol" cuyo precio es mayor a 2:
 update medicamentos set precio=5
  where nombre like 'Paracetamol%' and
  precio>2;



 

Otros problemas:
A) Trabaje con la tabla "peliculas" de un video club.

1- Elimine la tabla, si existe.

2- Créela con la siguiente estructura:
 -codigo (entero sin signo, autoincrementable),
 -titulo (cadena de 30), not null,
 -actor (cadena de 20),
 -duracion (entero sin signo no mayor a 200 aprox.),
 -clave primaria (codigo).

3- Visualice la estructura de la tabla "peliculas".

4- 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',null,100);
 insert into peliculas (titulo,actor,duracion)
  values('Elsa y Fred','China Zorrilla',110);
 insert into peliculas (titulo,actor,duracion)
  values('Mrs. Johns','Richard Gere',180);

5- Actualice el valor del campo "actor" cambiando por 'R. Gere- J. Roberts', de la película cuyo 
código es 5:
 update peliculas set actor='R. Gere-J. Roberts'
  where codigo=5;

6- Seleccione todas las películas en las cuales trabaje el actor "Gere". Use "like". (2 registros 
seleccionados).

7- Recupere los registros que NO contengan la letra "y" en el título y contenga "ch" en el 
campo "actor" (2 registros):
 select * from peliculas
  where titulo not like '%y%' and
  actor like '%ch%';

8- Seleccione las películas que comiencen con "M" y cuya duración sea menor a 150 (3 registros):
 select * from peliculas
  where titulo like 'M%' and
  duracion<150;

9- Cambie el valor de la duración a 100 en las películas en las cuales el campo "actor" comience 
con "D":
 update peliculas set duracion=100
  where actor like 'D%';

10- Recupere los registros que cumplan la condición del punto anterior, para verificar el cambio de 
la duración:
 select * from peliculas
  where actor like 'D%';

11- Vea si existen películas con títulos nulos:
 select * from peliculas
  where titulo like null;

12- Vea si existen películas con valor nulo en el campo "actor":
 select * from peliculas
  where actor like null;


B) Trabaje con la tabla "usuarios" que almacena el nombre y clave de cada usuario.

1- Elimine la tabla, si existe.
- Créela con la siguiente estructura:
 -nombre (cadena de 20),
 -clave (cadena de 10),
 -clave primaria (clave).

3- Visualice la estructura de la tabla "usuarios".

4- Ingrese los siguientes registros:
 insert into usuarios (nombre, clave) values ('Leonardo','payaso');
 insert into usuarios (nombre, clave) values ('MarioPerez','Marito');
 insert into usuarios (nombre, clave) values ('Marcelo','River');
 insert into usuarios (nombre, clave) values ('Gustavo','Boca');
 insert into usuarios (nombre, clave) values ('MarcosMercado','RealMadrid');
 insert into usuarios (nombre, clave) values ('Susana','chapita');
 insert into usuarios (nombre, clave) values ('Gonzalo','Z80');
 insert into usuarios (nombre, clave) values ('GustavoPereyra','RealMadrid');

5- Busque los registros cuya clave contenga sólo 5 letras:
 select * from usuarios
  where clave like '_____';

6- Busque los registros cuyo nombre de usuario termine con "o":
 select * from usuarios
  where nombre like '%o';

Retornar