SQL NULL: identifica valores faltantes

En SQL Null Se utiliza para identificar valores faltantes o desconocidos. NULL realmente no es un valor específico es un indicador. No pienses en NULL como similar a cero o en blanco, no es lo mismo. Cero (0) y espacios en blanco » «, son valores. Es importante comprender cómo se utiliza en SQL Null, con los valores faltantes y su efecto en las consultas y los cálculos en SQL Server.

Tabla y valores Null de base de datos

En muchas situaciones, cada fila y columna contendrá datos, pero hay casos en los que tiene sentido que algunas columnas no contengan un valor.

Cliente

ID de clienteNombreCiudadEstadoEdadSexo
2Pedro MartínezNueva YorkNY55M
3José PazOmahaNENULLF
4ChrisVerdeMINULLNULL
5Lori Otterman SRLOsloNULLNULLNULL
6María MeloAustinTXNULLF

Considere la tabla de clientes anterior. Varias columnas contienen valores faltantes o desconocidos. Las razones por las que esto puede suceder incluyen un valor que es:

  • Falta: tal vez un cliente, como José Paz, no divulga su edad a su representante de servicio al cliente.
  • Desconocido – La fecha de despido de un empleado suele ser algún evento en el futuro imprevisto.
  • no se aplica: si el cliente es un negocio, entonces el sexo no se aplica.

Se podría argumentar que para los valores de texto se podrían usar espacios en blanco, como un espacio ‘ ‘, o incluso un valor vacío, que son dos comillas simples » para representar un valor faltante. Sin embargo, esta estrategia no funciona bien para números o fechas. Si se desconoce la edad del cliente, ¿qué valor numérico utilizaría? ¿Tendría sentido usar cero o un número negativo?

Creo que hacer eso causa más confusión y haría que sea muy fácil sesgar los resultados. Por ejemplo, si fuera a calcular la edad promedio de sus clientas, los ceros, los que estaba utilizando para representar los valores faltantes, harían que la edad promedio real fuera más baja de lo que esperaría.

SQL reserva la palabra clave en SQL NULL para denotar un valor desconocido o faltante. En los valores NULL se tratan de manera diferente a los valores. Se requiere una consideración especial al comparar valores nulos o usarlos en expresiones.

Valor SQL NULL en comparaciones:

Cuando no es posible codificar especialmente sus datos usando «N / A», puede usar la palabra clave especial NULL para denotar un valor faltante. NULL es complicado. NULL no es un valor en el sentido normal. Por ejemplo, no hay dos NULL iguales entre sí. ¡Sorprendentemente NULL = NULL es FALSE!

Sin embargo, SQL Null cubre este dilema. Puede utilizar las comparaciones IS NULL y IS NOT NULL para probar los valores con SQL NULL.

Ejemplo SQL is Null con la instrucción SELECT

SELECT * 
FROM Empleado WHERE Nota IS NULL

sql-null

Devolverá todos los Empleados sin contenido en el campo nota.

SELECT * FROM Empleado WHERE Nota IS NOT NULL

Devolverá todos los EMPLEADO que tengan un valor en Nota.

Como es de esperar, los valores nulos tienen un efecto adverso en las expresiones. Dado que en SQL  NULL denota un valor indefinido, su participación en la mayoría de las expresiones hace que la expresión sea desconocida, o NULL, también.

Ejemplo: uso de IS NULL con la instrucción UPDATE

A continuación, veamos un ejemplo de cómo usar la condición IS NULL en una instrucción UPDATE.

En este ejemplo, tenemos una tabla llamada productos con los siguientes datos:

ID_Prodnombre_prodcantidad
1Pera50
2Plátano50
3Naranja50
4Manzana50
5Piña75
6Jamón 25
7Limón NULL

Ingrese la siguiente declaración de ACTUALIZACIÓN:

UPDATE productos
SET cantidad= 100
WHERE cantidad IS NULL;

Habrá 1 registro actualizado. Seleccione de nuevo los datos de la tabla de productos :

SELECT * FROM productos;

Estos son los resultados que deberías ver:

ID del Prodnombre del procantidad
1Pera50
2Banana50
3Naranja50
4Manzana50
5Piña75
6Jamón 25
7Limón 100

Este ejemplo actualizará todos los valores de cantidad en la tabla de productos a 100 donde el cantidad contiene un valor en SQL NULL. Como puede ver, el cantidad en la última fila se ha actualizado a 100.

Ejemplo: uso de IS NULL con la instrucción DELETE

A continuación, veamos un ejemplo de cómo usar la condición IS NULL en una instrucción DELETE .

En este ejemplo, tenemos una tabla llamada pedidos con los siguientes datos:

Solicitar IDId_clientefecha de orden
170002016/04/18
250002016/04/18
380002016/04/19
440002016/04/20
5NULO2016/05/01

Ingrese la siguiente instrucción DELETE:

DELETE FROM pedidos
WHERE cliente_id IS NULL;

Habrá 1 registro eliminado. Seleccione de nuevo los datos de la tabla de pedidos :

SELECT * FROM pedidos;

Estos son los resultados que deberías ver:

Solicitar IDId_clientefecha de orden
170002016/04/18
250002016/04/18
380002016/04/19
440002016/04/20

Este ejemplo eliminará todos los registros de la tabla de pedidos donde el ID_cliente contiene un valor en SQL NULL. Como puede ver, eliminó el registro para pedido_id =5.

Conclusión

En SQL, los valores NULL son importantes para administrar datos. Los valores NULL son marcadores de posición para valores faltantes o desconocidos en una columna. Comprender cómo trabajar con valores NULL ayuda a los desarrolladores de bases de datos a evitar errores y crear resultados más precisos con nuestras consultas.

Tenga en cuenta que cuando crea una tabla en SQL, los programadores de bases de datos pueden especificar qué columnas pueden permitir valores NULL . De forma predeterminada, todas las columnas permitirán valores NULL. Si desea insertar datos en una tabla que permite valores NULL , puede insertar un valor SQL NULL con la palabra clave NULL . También puede simplemente omitir el valor.

Si consulta datos que contienen valores en SQL NULL , los programadores pueden usar las palabras clave de SQL IS NULL o IS NOT NULL para seleccionar datos que contienen valores NULL o si desea excluir datos que contienen valores NULL .

Las funciones en SQL Server COALESCE e IFNULL son excelentes para manejar valores NULL en SQL. La función COALESCE usa varios argumentos y devuelve el primer valor que no es NULL , mientras que la función IFNULL solo toma dos argumentos y devuelve el primer argumento si no es NULL . Si no, devuelve el segundo argumento.

Deja un comentario