Mis hijos aprenden SQL y Oracle (5)

Hoy toca algo más "serio" en el curso. Hablaremos del valor null, y de campos que pueden o no contener dicho valor. Podríamos referirnos a este valor como "vacío", pero no como cadena de caracteres vacía sino como "nada" ó "sin valor". Por tanto el motor de base de datos no coloca en ese campo ningún valor de ninguno de los tipos de datos que vimos: simplemente no hay nada. ¿Pero cómo insertar, manejar, controlar, etc estos valores?. No es fácil, y de hecho es uno de las causas más comunes de ciertos problemas de programación en Bases de Datos. Vamos con ello, y para eso vamos a crear una nueva tabla (dejamos los "juguetes" para más tarde, jajajaja), por ejemplo ésta:
 create table peliculas(
  titulo varchar2(100) not null,
  genero varchar2(25) not null,
  sinopsis varchar2(300),
  año number(4,0) null
);


Vamos a fijarnos bien en la definición de la tabla Peliculas: los campos "titulo" y "genero" NO admiten valores null (véase la construcción "not null" tras la declaración), mientras que sinopsis y año (el segundo porque así lo define explícitamente, el primero porque al no declarar nada el valor por defecto es que un campo sí pueda tener valores nulos). Es decir, si ejecutamos los siguientes comandos funcionarán correctamente:
 insert into peliculas(titulo,genero,sinopsis,año) values ('Casablanca','Histórica','Romántica historia con final no muy feliz ',null);
  insert into peliculas(titulo,genero,sinopsis,año) values ('Cars','Infantil',null,null);
  insert into peliculas(titulo,genero) values ('Seven','Thriller');

Es importante ver que si vamos a asignar un valor null a un campo, opcionalmente podemos no incluirlo en la sentencia, como se aprecia en el caso de la inserción del film "Seven", donde se incluyen sólo en el "insert" los campos que obligatoriamente deben tener algún valor. Chicos, os dejo como ejercicio intentar insertar valores nulos en registros en alguno de los campos que no los admiten. Como se espera, el motor de base de datos os devolverá un error similar a éste:
Error SQL: ORA-01400: cannot insert NULL into ("SYSTEM"."PELICULAS"."nombre_campo")
01400. 00000 -  "cannot insert NULL into (%s)"

Los campos "null" contienen un valor "vacío", pero sigue siendo un valor, por tanto lo podremos incluir en nuestras consultas como un valor más. Un ejemplo sería localizar las películas "sin año conocido de realización" (¿sería posible? Sí para nuestro propósito educativo, jejejejeje...):
select * from peliculas where año is null;

No hay comentarios :

Publicar un comentario

Buscar en el Blog: