14 - Valores null.


Problema:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe:

 drop table if exists libros;

Creamos la tabla estableciendo con la siguiente estructura:

 create table libros(
  codigo integer auto_increment,
  titulo varchar(50) not null,
  autor varchar(50),
  editorial varchar(25),
  precio float,
  primary key(codigo)
 );

Al visualizar la estructura de la tabla con "describe", vemos lo siguiente:

Field		Type			Null	Key	Default	Extra
______________________________________________________________________
codigo		int(11)		 7 b..	NO	PRI	(NULL)	auto_increment
titulo		varchar(50)	11 b..	NO
autor		varchar(50)	11 b..	YES		(NULL)
editorial	varchar(25)	11 b..	YES		(NULL)
precio		float		 5 b..	YES		(NULL)

Vemos que el campo "codigo" y el campo "titulo" no permiten valores nulos. Y que el campo "codigo" es clave primaria y "auto_increment". Los demás campos permiten valores nulos.

Ingresamos algunos registros:

 insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Planeta',null);

ingresamos "null" para el precio, campo que permite valores nulos. Note que el valor "null" no se coloca entre comillas porque no es una cadena de caracteres.

Si intentamos ingresar el valor "null" en un campo que no lo permite (titulo), aparece un mensaje de error indicando tal situación:

 insert into libros (titulo,autor,editorial,precio)
  values (null,'Paenza','Paidos',10.30);

Si intentamos ingresar el valor "null" para el campo "codigo", que es clave primaria y "auto_increment", no lo tomará y seguirá la secuencia de incremento:

 insert into libros (codigo,titulo,autor,editorial,precio)
  values (null,'El quijote de la mancha', 'Cervantes Saavedra', 'Emece',25.50);

Podemos ingresar valores nulos en los campos que lo permiten, por ejemplo, en "editorial":

 insert into libros (titulo,autor,editorial,precio)
  values ('Harry Potter y la piedra filosofal', 'J.K. Rowling',null,30.00);

Ingresemos otros valores que nos servirán luego para verificar que los valores "null" son diferentes de 0 y de cadenas vacías.

 insert into libros (titulo,autor,editorial,precio)
  values ('Matematica estas ahi','Paenza','Paidos',0);
 insert into libros (titulo,autor,editorial,precio)
  values ('Martin Fierro','Jose Hernandez','',22.50);

Explicamos que "null" no es lo mismo que una cadena vacía o un valor 0.

Para recuperar los registros que contengan el valor "null" en el campo "precio" tipeamos:

 select * from libros
  where precio is null;

La salida será diferente a:

 select * from libros
  where precio=0;

Verifiquemos que las siguientes sentencias no retornan el mismo resultado:

 select * from libros
  where editorial is null;
 select *from libros
  where editorial='';

Con la primera sentencia recuperamos los libros cuya editorial es "null"; con la segunda, los libros cuya editorial guarda una cadena vacía.




Retornar