Comunidad de diseño web y desarrollo en internet online

Sobre el uso de NOT NULL en MYSQL...ayuda!

Citar            
MensajeEscrito el 24 Feb 2013 10:25 pm
Hola a todos en Cristalab.
Tengo una consulta en cuanto a Mysql, la verdad es que recien estoy aprendiendo esto en la Universidad y queria por favor su ayuda.

Pasa que hice una base de datos de prueba con una tabla llama padres la cual contiene los nombre de los padres, la estructura de la tabla es la siguiente:


Como se puede ver todos estan como NOT NULL

pero al insertar un registro con INSERT en la tabla, yo deliberadamente dejo el campo nombre vacío y mysql lo acepta y no entiendo porque si los campo son NOT NULL!

lo que hago con insert es:
INSERT TO padres (codpadre, email) VALUES("05","[email protected]") y mysql lo acepta es decir permite que el campo nombre quede vacio aun cuando en la estructura de la tabla todos los campos son NOT NULL.

Al hacer un Select * from padres me sale el ultimo registro agregado con el campo nombre vacio:


mi pregunta es: ¿Cuando defino una columna como NOT NULL no significa que obligatoriamente debe contener información y no quedar vacíos? y si no es así como pueda lograr que los campos de mi tabla necesariamente requieran el ingreso de datos y no queden sin ser llenados?

Les agradecería mucho su ayuda, de verdad.
Hasta Pronto!

Por adecad

23 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 24 Feb 2013 10:33 pm
Hola, algo más.
Acabo de hacer una nueva prueba dejando en vacio el campo codpadre que es una PrimaryKey y mysql lo ha aceptado, no entiendo. Ayuda por favor dejo una imagen de lo ultimo que hice:

Por adecad

23 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Feb 2013 12:29 am
NOT NULL, significa que no acepta NULL, que es un valor especial para MySQL. NULL es diferente de vacío, a lo que tu llamas vacío es simplemente una cadena de caracteres vacía (en tu caso).

Con respecto a tu clave primaria, la identificas como una cadena de hasta 10 caracteres (varchar(10)). Cuando omites el valor de un campo, MySQL trata de llenarlo con el valor por defecto correspondiente al tipo de dato. Para los varchar es una cadena vacía. Si intentas ejecutar un insert similar, te dará error por violación de clave primaria, pues ya existe un registro con clave primaria igual vacío.

Te sugiero leer sobre los tipos de datos de MySQL
Tipo de Datos (MySQL)

Saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

chrome
Citar            
MensajeEscrito el 28 Feb 2013 12:22 pm

adecad escribió:




Nulo: no
Default: .... NULL ....

Al final?...

Si no querés que sean nulos y que si no lo pasan no quede vacío, cambiale el default.

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 28 Feb 2013 03:07 pm
Maikel, SinSemilla muchas gracias por las respuestas voy a revisar lo que me explicaron. Voy a leer sobre los datos en mysql.

Maikel osea que NOT NULL significa solo que no acepta valores NULL pero si cadenas vacías, cierto?
Y si quiero validar que el usuario no pueda dejar campos vacíos?
Que me recomiendas hacerlo con mysql, o con php o mejor con javascript en el propio formulario presentado en el navegador del usuario.
Gracias.

Por adecad

23 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Feb 2013 03:24 pm
Aclaremos que Javascript no es capaz de interactuar con MySQL (al menos no del lado del cliente). En tu caso debes hacerlo con php.

Y es así, un campo definido como NOT NULL no admite el valor NULL.

Puedes hacer la prueba con una simple consulta

Código MySQL :

-- tambien existe IS NOT NULL
SELECT * FROM `tabla` WHERE  `campo` IS NULL;


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

chrome
Citar            
MensajeEscrito el 28 Feb 2013 04:07 pm
Excelente, gracias por la aclaración y la respuesta.
Voy a hacer las pruebas y a leer datos en mysql.
Espero contar contigo para una proxima consulta jaja.
Saludos.

Por adecad

23 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Feb 2013 07:51 pm
Para validar los campos debes hacerlo de los dos lados... (cliente (con javascript) y servidor (con php)...)

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 28 Feb 2013 09:10 pm

SinSemilla escribió:

Para validar los campos debes hacerlo de los dos lados... (cliente (con javascript) y servidor (con php)...)

Saludos!


Sí eso he estado bien también, creo que esa es una buena forma de hacerlo.
Gracias SinSemilla.
Seguro que os dejo otra consulta por aquí de nuevo jeje.
Saludos!

Por adecad

23 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Feb 2013 10:26 pm

SinSemilla escribió:

Para validar los campos debes hacerlo de los dos lados... (cliente (con javascript) y servidor (con php)...)

Saludos!


Siempre hay que validar del lado del servidor, por seguridad de la aplicación. La validación del lado del cliente solo mejora la experiencia del usuario.

Aclaro esto, porque hay desarrolladores que le prestan más atención a la validación del cliente que la del servidor, cuando debe ser al revés.

Saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

chrome
Citar            
MensajeEscrito el 01 Mar 2013 12:15 pm

Maikel escribió:


Siempre hay que validar del lado del servidor, por seguridad de la aplicación. La validación del lado del cliente solo mejora la experiencia del usuario.

Toda la razón....

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.