Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/10/2012, 08:37
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: 2 preguntas con respecto a PHP y Mysql

Hola gonzacrus:

Te recuerdo que este es un foro de MySQL, no de PHP, son cosas completamente distintas, aunque muchas personas suelen relacionarlos, aun no sé muy bien por qué... Para preguntas sobre PHP, tienes que publicarlas en el foro correspondiente:

http://www.forosdelweb.com/f18/

Ahora bien, en cuanto a la primer pregunta y hablando estrictamente de Base de datos, un campo puede quedar vacío SI Y SOLO SI EN LA TABLA NO ESTÁ DECLARADO COMO NOT NULL... checa este ejemplo

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla(
  2.     -> nombre VARCHAR(20) NOT NULL,
  3.     -> primer_apellido VARCHAR(20) NOT NULL,
  4.     -> segundo_apellido VARCHAR(20),
  5.     -> PRIMARY KEY (id));
  6. Query OK, 0 rows affected (0.07 sec)

Observa que el campo SEGUNDO_APELLIDO no está marcado como not null, por lo tanto puede asignarse como vacio:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla VALUES
  2.     -> (NULL, 'LEONARDO', 'CORCEGA', NULL),
  3.     -> (NULL, 'LUIS', 'PEREZ', 'GARCIA');
  4. Query OK, 2 rows affected (0.02 sec)
  5. Records: 2  Duplicates: 0  Warnings: 0
  6.  
  7. mysql> SELECT * FROM tabla;
  8. +----+----------+-----------------+------------------+
  9. | id | nombre   | primer_apellido | segundo_apellido |
  10. +----+----------+-----------------+------------------+
  11. |  1 | LEONARDO | CORCEGA         | NULL             |
  12. |  2 | LUIS     | PEREZ           | GARCIA           |
  13. +----+----------+-----------------+------------------+
  14. 2 rows in set (0.00 sec)

El campo ID es un campo especial, ya que está marcado como auto-incremental, pero ese sería tema de otro post... volviendo al campo segundo apellido, en realidad podrías omitirlo del insert sin ningún problema:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla (nombre, primer_apellido) VALUES
  2.     -> ('FERNANDO', 'HERNANDEZ');
  3. Query OK, 1 row affected (0.06 sec)
  4.  
  5. mysql> SELECT * FROM tabla;
  6. +----+----------+-----------------+------------------+
  7. | id | nombre   | primer_apellido | segundo_apellido |
  8. +----+----------+-----------------+------------------+
  9. |  1 | LEONARDO | CORCEGA         | NULL             |
  10. |  2 | LUIS     | PEREZ           | GARCIA           |
  11. |  3 | FERNANDO | HERNANDEZ       | NULL             |
  12. +----+----------+-----------------+------------------+
  13. 3 rows in set (0.00 sec)

Sin embargo, el campo PRIMER_APELLIDO no puede quedar como vacio:

Código MySQL:
Ver original
  1. mysql> INSERT INTO tabla (nombre, primer_apellido) VALUES
  2.     -> ('HUGO', NULL);
  3. ERROR 1048 (23000): Column 'primer_apellido' cannot be null

Espero que esto te sirva para aclarar un poco el panorama.

Saludos
Leo