12 - Operadores relacionales (is null)


Primer problema:

Una farmacia guarda información referente a sus medicamentos en una tabla llamada "medicamentos".

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

 drop table medicamentos;
 create table medicamentos(
  codigo number(5) not null,
  nombre varchar2(20) not null,
  laboratorio varchar2(20),
  precio number(5,2),
  cantidad number(3,0) not null
 );

3- Visualice la estructura de la tabla "medicamentos"

note que los campos "codigo", "nombre" y "cantidad", en la columna "Null" muestra "NOT NULL".

4- Ingrese algunos registros con valores "null" para los campos que lo admitan:

 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(1,'Sertal gotas',null,null,100); 
 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(2,'Sertal compuesto',null,8.90,150);
 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(3,'Buscapina','Roche',null,200);

5- Vea todos los registros.

6- Ingrese un registro con valor "0" para el precio y cadena vacía para el laboratorio.

7- Intente ingresar un registro con cadena vacía para el nombre (mensaje de error)

8- Intente ingresar un registro con valor nulo para un campo que no lo admite (aparece un mensaje de error)

9- Recupere los registros que contengan valor "null" en el campo "laboratorio" (3 registros)

10- 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 distinto (2 y 1 registros respectivamente)

11- Recupere los registros cuyo laboratorio no contenga valor nulo (1 registro)

12- Recupere los registros cuyo precio sea distinto de 0, luego los que sean distintos de "null" (1 y 2 resgistros respectivamente)
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).

13- Ingrese un registro con una cadena de 1 espacio para el laboratorio.

14- Recupere los registros cuyo laboratorio sea "null" y luego los que contengan 1 espacio (3 y 1 registros respectivamente)

Note que la salida de la primera sentencia no muestra los registros con valores para el campo "laboratorio" (un caracter espacio es un valor); el resultado de la segunda sentencia muestra los registros con el valor " " para el campo precio.

15- Recupere los registros cuyo laboratorio sea distinto de ' '(cadena de 1 espacio), luego los que sean distintos de "null" (1 y 2 registros respectivamente)
Note que la salida de la primera sentencia no muestra los registros con valor ' ' y tampoco los que tienen valor nulo; el resultado de la segunda sentencia muestra los registros con valor para el campo laboratorio (incluso el valor ' ')

Ver solución

 drop table medicamentos;
 create table medicamentos(
  codigo number(5) not null,
  nombre varchar2(20) not null,
  laboratorio varchar2(20),
  precio number(5,2),
  cantidad number(3,0) not null
 );

 describe medicamentos;

 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(1,'Sertal gotas',null,null,100); 
 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(2,'Sertal compuesto',null,8.90,150);
 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(3,'Buscapina','Roche',null,200);

 select *from medicamentos;

 insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad)
  values(4,'Bayaspirina','',0,150);

 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(0,'','Bayer',15.60,200);

 insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad)
  values(null,'Amoxidal jarabe','Bayer',25,120);

 select *from medicamentos
  where laboratorio is null;

 select *from medicamentos where precio is null;
 select *from medicamentos where precio=0;

 select *from medicamentos where laboratorio is not null;

 select *from medicamentos where precio<>0;
 select *from medicamentos where precio is not null;

 insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad)
  values(5,'Geniol',' ',0.5,200);

 select *from medicamentos where laboratorio is null;
 select *from medicamentos where laboratorio=' ';

 select *from medicamentos where laboratorio<>' ';
 select *from medicamentos where laboratorio is not null;

 

Segundo problema:

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

1- Elimine la tabla:

  drop table peliculas;

2- Créela con la siguiente estructura:

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

3- Visualice la estructura de la tabla. note que el campo "codigo" y "titulo", en la columna "Null" muestran "NOT NULL".

4- Ingrese los siguientes registros:

 insert into peliculas (codigo,titulo,actor,duracion)
  values(1,'Mision imposible','Tom Cruise',120);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(2,'Harry Potter y la piedra filosofal',null,180);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(3,'Harry Potter y la camara secreta','Daniel R.',null);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(0,'Mision imposible 2','',150);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(4,'Titanic','L. Di Caprio',220);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(5,'Mujer bonita','R. Gere-J. Roberts',0);

5- Recupere todos los registros para ver cómo Oracle los almacenó.

6- Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de error)

7- Muestre los registros con valor nulo en el campo "actor" (2 registros)

8- Actualice los registros que tengan valor de duración desconocido (nulo) por "120" (1 registro actualizado)

9- Coloque 'Desconocido' en el campo "actor" en los registros que tengan valor nulo en dicho campo (2 registros)

10- Muestre todos los registros

11- Muestre todos los registros con valor nulo en el campo "actor" (ninguno)

12- Actualice la película en cuyo campo "duracion" hay 0 por "null" (1 registro)

13- Recupere todos los registros.

14- Borre todos los registros en los cuales haya un valor nulo en "duracion" (1 registro)

15- Verifique que se eliminó recuperando todos los registros.


Ver solución
  drop table peliculas;

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

 describe peliculas;

 insert into peliculas (codigo,titulo,actor,duracion)
  values(1,'Mision imposible','Tom Cruise',120);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(2,'Harry Potter y la piedra filosofal',null,180);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(3,'Harry Potter y la camara secreta','Daniel R.',null);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(0,'Mision imposible 2','',150);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(4,'Titanic','L. Di Caprio',220);
 insert into peliculas (codigo,titulo,actor,duracion)
  values(5,'Mujer bonita','R. Gere-J. Roberts',0);

 select *from peliculas;

 insert into peliculas (codigo,titulo,actor,duracion)
  values(null,'Mujer bonita','R. Gere-J. Roberts',190);

 select *from peliculas where actor is null;

 update peliculas set duracion=120 where duracion is null;

 update peliculas set actor='Desconocido'
  where actor is null;

 select *from peliculas;

 select *from peliculas where actor is null;

 update peliculas set duracion=null where duracion=0;

 select *from peliculas;

 delete from peliculas
  where duracion is null;

 select *from peliculas;

Retornar