Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/01/2013, 09:17
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Valores null y not null

En un tema crítico en las bases de datos, y difícil de entender para los legos, y algunas veces para los programadores.
Para estos últimos, un valor Null o Nothing, es el resultado de un error, y en ese sentido algo que no debe existir.
En las bases de datos, es una restricción de consistencia de datos, de integridad referencial, un valor esperable, una condición deseada o una condición a evitar.
Se trata de algo que en definitiva se usa constantemente en todas las operaciones de consultas, altas, bajas o modificaciones de datos.
Yendo a su definición un poco más estricta, NULL no es un dato, sino un estado. Es un estado de indefinición, y como tal no operan contra él (al menos en MySQL) los operadores lógicos como =, <, >, o cosas similares. Se lo debe analizar verificando si es o no es NULL, pero no es "igual a ". Por eso mismo un NULL no puede devolver cero o 1, sino que eso lo devuelve la operación lógica usada o la función que se aplique.
IS NULL o IS NOT NULL, es la comparación más habitual, por ejemplo, pero en algunos casos puede usarse alguna función como ISNULL().

A nivel de integridad de datos, por ejemplo, se usa para generar la restricción de que un cierto dato no puede quedar vacío. Es una de las formas más habituales de crear esa condición.
Con las relaciones entre tablas, además, sirve para verificar que no pueda existir un registro no relacionado con otra entidad, si esa relación es obligatoria.
Por ejemplo, en el detalle de una factura, el código de producto es siempre NOT NULL, porque debe existir el producto para ser facturado. Siempre.
En otros casos se puede definir que algo sea opcional, simplemente dejando que sea NULL, pero bajo ciertas condiciones.

Cuando realizas una consulta entre dos tablas, pero buscando aquello que no relaciona la primera con la segunda tablas, la segunda devolverá NULL(al usar LEFT JOIN), y en ese caso es una condición buscada.
En resumen: El uso de NULL en las bases es múltiple y constante. Raro es que no lo uses en algún momento.

El manual de referencia de MySQL tiene un capítulo entero dedicado a ese tema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)