2011-04-02 24 views

Respuesta

31

Para entender qué significa "Permitir nulo", debe comprender qué es NULL, y comprender que es diferente a simplemente una cadena cero o en blanco.

NULL es un valor especial en SQL. Indica datos que no existen. Esto es diferente a los datos que están en blanco.

Cuando crea una tabla en MySQL, le permite especificar si sus campos pueden ser NULL. Si especifica "Permitir nulo", entonces será posible crear registros con los valores NULL en esos campos.

Esto puede serle útil en algunos casos. Por ejemplo, un campo Sí/No puede ser un valor booleano, pero si el usuario no especificó su preferencia, es posible que desee establecerlo en NULL para indicar esto en lugar de un valor predeterminado para sí o no.

Sin embargo, en muchos casos, permitir NULL puede ser problemático. Los campos configurados en NULL pueden producir resultados inesperados en las consultas, porque NULL no sigue las mismas reglas que otros valores en todos los casos. Por ejemplo: si consulta el campo de ejemplo anterior WHERE myfield != 1, puede esperar obtener resultados para todos los registros que no sean iguales a 1. Sin embargo, los campos NULL no serán devueltos; necesitas escribir un caso especial para ellos.

NULL también se utiliza como el valor predeterminado al hacer consultas JOIN donde algunos de los resultados no tienen un registro para unirse. Los campos desconocidos de la tabla unida se establecerán en NULL.

En general, si no está seguro de qué hacer con "Permitir nulo", la opción más segura es configurarlo para que no permita nulos.

Consulte el Wikipedia entry for NULL in SQL para obtener más información.

Espero que ayude.

+0

¡Gracias! Realmente agradable explicado. –

+0

+1 muy fácil de entender, gracias –

4

Permitir nulo significa que cuando usted cambia o inserta los datos, no necesita para completar esos datos. No es obligatorio.

+0

¡Gracias por tu respuesta! –

4

En esencia, si permite un valor nulo, está diciendo que el campo en cuestión puede contener un valor legítimo (p. Ej .: 2011-04-02 si fue una fecha) así como "NULO" (o " sin valor").

Como tal, si imagina una situación en la que un campo era obligatorio, siempre se debe denotar como NOT NULL en la declaración de esquema, mientras que un campo opcional se puede dejar como está.

Para obtener más información, consulte la sección Working with NULL Values del manual de MySQL, que (entre otras cosas) perfectamente resume las cosas así:

Conceptualmente, NULL significa “un valor desconocido que falta” y se trata algo diferente de otros valores.

+0

Gracias por la excelente respuesta y el enlace. Definitivamente lo leeré. –

Cuestiones relacionadas