Duda inserts en base de datos

B

Imaginemos que tengo la siguiente tabla:

CREATE TABLE alumno
(
DNI		VARCHAR(9)	PRIMARY KEY,
nombre		VARCHAR(20)	NOT NULL,
apellidos	VARCHAR(20)	NOT NULL,
edad		SMALLINT(2)	NOT NULL,
correo		VARCHAR(30)	NOT NULL,
)

Al haber declarado todos los campos como NOT NULL, a la hora de hacer un insert, hay alguna manera de omitir algún campo? por ejemplo si quiero hacer inserts de todo menos el correo, podría hacerlo?

Es recomendable poner NOT NULL en todos los campos? o solo en los que me interese a mi que se tenga que rellenar sí o sí.

Saludos y gracias.

Troyer

Al poner NOT NULL obligas a insertar algo si o si, básciamente se utiliza para eso, para forzar algún valor.

No es recomendable poner NOT NULL en valores de la tabla que no sean obligatorios ya que normalmente las queries cuando chequeas valores vacios miras si es NULL o no, ya que NULL significa que no hay ningún valor.

Ejemplo:

CREATE TABLE alumno
(
DNI		VARCHAR(9)	PRIMARY KEY,
nombre		VARCHAR(20)	 NOT NULL,
apellidos	VARCHAR(20)	 NOT NULL,
edad		SMALLINT(2),
correo		VARCHAR(30)	NOT NULL UNIQUE,
)
1 1 respuesta
B

.

1
B

#2 Gracias por responder, si a la derecha de edad no pones nada, el sistema te lo detecta como si fuera opcional entiendo?

Tiene sentido poner en algún campo NULL (no en esta tabla, en algún otro ejemplo)? si pones NULL, a la hora de hacer un insert no podrías insertar nada no?

1 respuesta
Troyer

#4 Si no indicas NOT NULL por defecto se aplica la constrait NULL, lo que significa que esa columna podrá almacenar valores del tipo NULL, NULL realmente no significa opcional, significa que no tiene ningún dato, NOT NULL significa que esa columna debe de tener un valor si o si.

Ejemplo de insert:

INSERT INTO alumno (DNI,nombre,apellidos,edad,correo) VALUES ( '4814520R', 'Paquito', 'Chocolatero', NULL, 'xocolate@email.com');
1
Ranthas

Unos consejos:

-> Si metes una columna como NOT NULL, añade un valor por defecto. Así, en la sentencia INSERT si no especificas columna, te añadirá el DEFAULT. Ojo cuidado que no todos los rdbms admiten esta funcionalidad.
-> El uso de esa constraint puede afectar bastante al rendimiento del rdbms, así que ojo, ponlo donde lo necesites, no a discreción.
-> Si en la definición de una columna dejas el NULL ENABLED, simplemente significa que esa columna podrá registrar datos desconocidos (lo que viene siendo un null). No significa q solo puedas meter nulls, sino que acepta ese valor.

1 1 respuesta
B

Por cierto, aunque es raro el caso hay números de DNI duplicados por lo que no te aconsejo poner ese campo como clave al tener que ser único.

2
Merkury

#6 el poner un campo nullable y pasarle un valor por defecto solo tiene sentido en algunas situaciones, si tienes un campo nullable que no necesitas, para que vas a meter un valor por defecto, haciendo la query mas lenta y aumentando el tamaño de la DB innecesariamente?

1 respuesta
Ranthas

#8 No me refiero a los campos que admiten null (nullable), sino a los que no admiten null.

Al marcarlo como not null enabled, que menos que marcar un valor por defecto. Sin embargo, en los nullable, como dices tú, sólo tendría sentido en algunas situaciones.

1 respuesta
Merkury

#9 Ah vale perdona, lo he leido mal. Aunque sinceramente, el poner un default para que la consulta no pete a mi me parece un poco meh.

Ya que puedes pasar consultas con datos que no son reales y el desarrollador/usuario no van a ser notificados.

Usuarios habituales