14 - Valores null.


Problema:
Retome la tabla llamada "medicamentos" que almacena la información de los productos
que se venden en una farmacia.

1- Elimine la tabla, si existe.

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

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

4- Ingrese los siguientes registros:
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Sertal gotas','Roche',5.2,100); 
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Sertal compuesto','Roche',7.1,150);
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Buscapina','Roche',null,200);
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Amoxidal 500','Bayer',15.60,0);
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Amoxidal jarabe','Bayer',25,120);
 insert into medicamentos (nombre,laboratorio,precio,cantidad)
  values('Amoxinil',null,25,120);
 insert into medicamentos (nombre, laboratorio,precio,cantidad)
  values('Bayaspirina','',0,150); 

5- Verifique que el campo "codigo" generó los valores de modo automático (select).

6- Recupere los registros que contengan valor "null" en el campo "laboratorio", 
   luego los que tengan una cadena vacía en el mismo campo. Note que el resultado 
    es diferente:
 select * from medicamentos where laboratorio is null;
 select * from medicamentos where laboratorio='';

7- Recupere los registros que contengan valor "null" en el campo "precio", 
   luego los que tengan el valor 0 en el mismo campo. Note que el resultado es diferente:
 select * from medicamentos where precio is null;
 select * from medicamentos where precio=0;

8- Intente ingresar el siguiente registro con valor "null" para el campo "nombre":
 insert into medicamentos (nombre, laboratorio,precio,cantidad)
  values(null,'Bayer',10.20,100); 
Aparece un mensaje de error.

8- Intente ingresar el siguiente registro con valor "null" para el campo "cantidad":
 insert into medicamentos (nombre, laboratorio,precio,cantidad)
  values('Benadryl comprimidos','Bayer',10.20,null); 
Aparece un mensaje de error.

9- Ingrese el siguiente registro con valor "null" para el campo correspondiente al código:
 insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad)
  values(null,'Benadryl comprimidos','Bayer',10.20,null);
No muestra un mensaje de error. Si recuperamos todos los registros, verá que almacenó 
el siguiente valor de la secuencia de autoincremento.

10- Recupere los registros cuyo precio sea distinto de 0, luego los que 
    sean distintos de "null":
 select * from medicamentos where precio<>0;
 select * from medicamentos where precio is not null;
Note que la salida de la primera sentencia no muestra los registros con valor 0 y tampoco 
los que tienen valor nulo; el resultado de la segunda sentencia muestra los registros con 
valor para el campo precio (incluso el valor 0). Esto es porque los valores "null" no 
pueden compararse con operadores relacionales.

11- Recupere los registros en los cuales el laboratorio no contenga una cadena vacía, 
    luego los que sean distintos de "null":
 select * from medicamentos where laboratorio<>'';
 select * from medicamentos where laboratorio is not null;
Note que la primera sentencia solicita los registros que no tengan cadena vacía, es decir, 
los que guardan una cadena, como "null" no es una cadena, no retorna los registros con valor nulo. 
El resultado de la segunda sentencia solicita que no muestre los valores nulos, es decir, 
que muestre cualquier cadena, incluso vacía.



 

Otros problemas:
Trabaje con la tabla que almacena los datos sobre películas, llamada "peliculas".

1- Elimine la tabla.

2- Créela con la siguiente estructura:
 -codigo (entero, autoincremento),
 -titulo (cadena de 30, not null),
 -actor (cadena de 20),
 -duracion (entero),
 -clave primaria (codigo).

3- Visualice la estructura de la tabla.

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',150);
 insert into peliculas (titulo,actor,duracion)
  values('Titanic','L. Di Caprio',220);
 insert into peliculas (titulo,actor,duracion)
  values('Mujer bonita','R. Gere-J. Roberts',200);

5- Recupere todos los registros para verificar la carga automática de los códigos.

6- Ingrese un registro con valor nulo para el campo clave primaria:
 insert into peliculas (codigo,titulo,actor,duracion)
  values(null,'Elsa y Fred','China Zorrilla',90);
Verifique que acepta el registro pero pasa por alto el dato ingresado para el código colocando en 
su lugar el valor siguiente de la secuencia.

7- Intente ingresar un registro con valor nulo para el campo "titulo". Verifique que no realiza la acción.

8- Ingrese un registro con valor nulo para los campos "actor" y "duracion":
 insert into peliculas (titulo,actor,duracion)
  values('Mr. Johns',null,null);
Verifique que el registro ha sido ingresado.

9- Ingrese un registro con cadenas vacías para los campos varchar y valor 0 para los campos numéricos:
 insert into peliculas (codigo,titulo,actor,duracion)
  values(0,'','',0);
Visualice el registro para ver cómo almacenó MySQL el registro ingresado anteriormente.

10- Coloque 120 en la duración de la película cuyo valor de duración sea nulo (1 registro actualizado):
update peliculas set duracion=120 where duracion is null;

11- Coloque 'Desconocido' en el campo "actor" en los registros que tengan valor nulo en dicho campo 
(1 registro afectado):
 update peliculas set actor='Desconocido'
  where actor is null;

12- Muestre todos los registros. Note que el cambio anterior no afectó al registro con valor nulo 
en el campo "actor".

13- Coloque 'Desconocido' en el campo "actor" en los registros que tengan cadena vacía en dicho 
campo (1 registro afectado):
 update peliculas set actor='Desconocido'
  where actor='';

14- Elimine los registros cuyo título sea una cadena vacía:
 delete from peliculas
  where titulo='';


Retornar