SQLite - Valores NULL

SQLite NULLes el término utilizado para representar un valor perdido. Un valor NULO en una tabla es un valor en un campo que parece estar en blanco.

Un campo con un valor NULL es un campo sin valor. Es muy importante comprender que un valor NULL es diferente a un valor cero o un campo que contiene espacios.

Sintaxis

A continuación se muestra la sintaxis básica del uso NULL mientras creaba una mesa.

SQLite> CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Aquí, NOT NULLsignifica que la columna siempre debe aceptar un valor explícito del tipo de datos dado. Hay dos columnas en las que no usamos NOT NULL, lo que significa que estas columnas podrían ser NULL.

Un campo con un valor NULO es uno que se ha dejado en blanco durante la creación del registro.

Ejemplo

El valor NULO puede causar problemas a la hora de seleccionar datos, ya que al comparar un valor desconocido con cualquier otro valor, el resultado siempre es desconocido y no se incluye en los resultados finales. Considere la siguiente tabla, EMPRESA con los siguientes registros:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Usemos la instrucción UPDATE para establecer algunos valores anulables como NULL de la siguiente manera:

sqlite> UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);

Ahora, la tabla EMPRESA tendrá los siguientes registros.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22
7           James       24

A continuación, veamos el uso de IS NOT NULL operador para enumerar todos los registros donde SALARIO no es NULO.

sqlite> SELECT  ID, NAME, AGE, ADDRESS, SALARY
        FROM COMPANY
        WHERE SALARY IS NOT NULL;

La declaración SQLite anterior producirá el siguiente resultado:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

A continuación se muestra el uso de IS NULL operador, que listará todos los registros donde SALARIO es NULO.

sqlite> SELECT  ID, NAME, AGE, ADDRESS, SALARY
        FROM COMPANY
        WHERE SALARY IS NULL;

La declaración SQLite anterior producirá el siguiente resultado.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22
7           James       24