Nulo (SQL)


Null o NULL es un marcador especial que se utiliza en el lenguaje de consulta estructurado para indicar que un valor de datos no existe en la base de datos . Introducido por el creador del modelo de base de datos relacional , EF Codd , SQL Null sirve para cumplir con el requisito de que todos los verdaderos sistemas de administración de bases de datos relacionales ( RDMS ) admitan una representación de "información faltante e información inaplicable". Codd también introdujo el uso del símbolo omega griego en minúsculas (ω) para representar Nulo en la teoría de bases de datos . En SQL, NULLes una palabra reservada que se utiliza para identificar este marcador.

Un valor nulo no debe confundirse con un valor de 0. Un valor nulo indica la falta de un valor, que no es lo mismo que un valor de cero. Por ejemplo, considere la pregunta "¿Cuántos libros tiene Adam?" La respuesta puede ser "cero" ( sabemos que no tiene ninguno ) o "nulo" ( no sabemos cuántos tiene). En una tabla de base de datos, la columna que informa esta respuesta comenzaría sin valor (marcada como Nulo) y no se actualizaría con el valor "cero" hasta que nos aseguremos de que Adam no posee libros.

SQL nulo es un estado, no un valor. Este uso es bastante diferente de la mayoría de los lenguajes de programación, donde el valor nulo de una referencia significa que no apunta a ningún objeto .

EF Codd mencionó los valores nulos como un método para representar los datos faltantes en el modelo relacional en un artículo de 1975 en el Boletín FDT de ACM - SIGMOD . El artículo de Codd que se cita más comúnmente en relación con la semántica de Null (como se adopta en SQL) es su artículo de 1979 en ACM Transactions on Database Systems , en el que también presentó su Modelo relacional/Tasmania , aunque muchas de las otras propuestas de el último documento ha permanecido oscuro. La sección 2.3 de su artículo de 1979 detalla la semántica de la propagación nula en operaciones aritméticas, así como las comparaciones que emplean un ternario (de tres valores).lógica cuando se compara con valores nulos; también detalla el tratamiento de Nulls en otras operaciones de conjuntos (este último tema sigue siendo controvertido en la actualidad). En los círculos de teoría de bases de datos , la propuesta original de Codd (1975, 1979) ahora se denomina "tablas de Codd". [1] Más tarde, Codd reforzó su requisito de que todos los RDBMS admitan Null para indicar datos faltantes en un artículo de dos partes de 1985 publicado en la revista ComputerWorld . [2] [3]

El estándar SQL de 1986 básicamente adoptó la propuesta de Codd después de un prototipo de implementación en IBM System R. Aunque Don Chamberlin reconoció los valores nulos (junto con las filas duplicadas) como una de las características más controvertidas de SQL, defendió el diseño de los valores nulos en SQL invocando los argumentos pragmáticos de que era la forma menos costosa de soporte del sistema para la información que faltaba, ahorrando al programador de muchas verificaciones duplicadas a nivel de aplicación (consulte el problema de semipredicado ) y, al mismo tiempo, brinda al diseñador de la base de datos la opción de no usar valores nulos si así lo desea; por ejemplo, para evitar anomalías bien conocidas (discutidas en la sección de semánticade este artículo). Chamberlin también argumentó que además de proporcionar alguna funcionalidad de valor faltante, la experiencia práctica con Nulls también condujo a otras características del lenguaje que se basan en Nulls, como ciertas construcciones de agrupación y uniones externas. Finalmente, argumentó que, en la práctica, Nulls también termina siendo utilizado como una forma rápida de parchear un esquema existente cuando necesita evolucionar más allá de su intención original, codificando no para información faltante sino inaplicable; por ejemplo, una base de datos que rápidamente necesita admitir autos eléctricos mientras tiene una columna de millas por galón. [4]


El carácter griego omega minúscula (ω) se utiliza para representar Nulo en la teoría de bases de datos .

 

La tabla Codd Emp puede representar la relación EmpH22 o EmpH37 , como se muestra en la imagen.
Ejemplo de consulta de combinación externa de SQL con marcadores de posición nulos en el conjunto de resultados. Los marcadores nulos están representados por la palabra en lugar de datos en los resultados. Los resultados son de Microsoft SQL Server , como se muestra en SQL Server Management Studio.NULL