El concepto del valor NULL es una fuente
        común de confusión para los recién llegados a SQL, que
        frecuentemente piensan que NULL es lo mismo
        que una cadena de caracteres vacía ''. Esto
        no es así. Por ejemplo, las siguientes sentencias son
        completamente diferentes:
      
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ('');
        Ambas sentencias insertan un valor en la columna
        phone, pero la primera inserta un valor
        NULL y la segunda una cadena vacía. El
        significado de la primera se puede traducir por “el
        número de teléfono no es conocido”, y el significado de
        la segunda es “se sabe que la persona no tiene teléfono,
        y por tanto, no hay número de teléfono.”
      
        Para ayudarle con la gestión de NULL, tiene
        disponibles los operadores IS NULL y
        IS NOT NULL y la función
        IFNULL().
      
        En SQL, el valor NULL nunca da verdadero al
        compararlo con otro valor, aún cuando este valor sea también
        NULL. Una expresión que contiene
        NULL siempre produce un valor
        NULL a menos que se indique lo contrario en
        la documentación de los operadores y funciones implicadas en la
        expresión. Todas las columnas en el siguiente ejemplo retornan
        NULL:
      
mysql> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);
        Si quiere buscar valores de columna que son
        NULL, no puede utilizar una comprobación
        expr = NULL. La siguiente sentencia no
        retorna registros, porque expr = NULL nunca
        es verdadero para cualquier expresión:
      
mysql> SELECT * FROM my_table WHERE phone = NULL;
        Para buscar valores NULL debe utilizar la
        comprobaciónIS NULL. Las siguientes
        sentencias muestran como encontrar el número de teléfono
        NULL y el vacío:
      
mysql> SELECT * FROM my_table WHERE phone IS NULL; mysql> SELECT * FROM my_table WHERE phone = '';
        Puede añadir una columna índice que tenga valores
        NULL si utiliza MySQL 3.23.2 o superiores, o
        si está utilizando los motores de almacenamiento
        MyISAM, InnoDB, o
        BDB. A partir de MySQL 4.0.2, el motor de
        almacenamiento MEMORY también tiene soporte
        para valores NULL en los índices. Si no es
        así, todas las columnas de índice deben ser declaradas como
        NOT NULL y usted no podrá insertar un valor
        NULL en la columna.
      
        Cuando lee datos con LOAD DATA INFILE, las
        columnas vacías o inexistentes se rellenan con
        ''. Si quiere un valor
        NULL en una columna, usted deberá utilizar
        \N en el archivo de datos. La palabra exacta
        “NULL” puede ser también
        utilizada en algunas circunstancias. Consulte
        Sección 13.2.5, “Sintaxis de LOAD DATA INFILE”.
      
        Cuando utiliza DISTINCT, GROUP
        BY, o ORDER BY, todos los valores
        NULL son tratados como iguales.
      
        Cunado utilice ORDER BY, los valores
        NULL son mostrados al principio, o al final
        si se especifica DESC para ordenar de manera
        descendiente. Excepción: De MySQL 4.0.2 hasta 4.0.10, los
        valores NULL se muestran primeros
        independientemente del orden.
      
        Las funciones de agregación (resumen) como
        COUNT(), MIN(), y
        SUM() ignoran los valores
        NULL. La excepción a esto es
        COUNT(*), que cuenta filas y no valores de
        columna individuales. Por ejemplo, la siguiente sentencia
        produce dos conteos. El primero es un recuento del número de
        registros en la tabla, y el segundo un recuento del número de
        valores diferentes a NULL en la columna
        age:
      
mysql> SELECT COUNT(*), COUNT(age) FROM person;
        En algunos tipos de columnas, MySQL gestiona los valores
        NULL de manera especial. Si inserta un valor
        NULL en una columna
        TIMESTAMP, se insertan la fecha y hora
        actual. Si inserta un valor NULL en una
        columna entera que tiene el atributo
        AUTO_INCREMENT, se inserta el siguiente
        número en la secuencia.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

