22 - Atributo default en una columna de una tabla.


Problema:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe:

 drop table if exists libros;

Creamos la tabla con la siguiente estructura:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  editorial varchar(15),
  autor varchar(30) default 'Desconocido',
  precio decimal(5,2) unsigned default 1.11,
  cantidad mediumint unsigned not null,
  primary key (codigo)
 );

Ingresamos algunos registros omitiendo algunos campos para ver cómo trabaja la cláusula "default".

 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Java en 10 minutos','Juan Pereyra','Paidos',25.7,100);

Como no ingresamos valor para el campo "codigo", se insertará el valor por defecto implícito, como "codigo" es un campo "auto_increment", el valor por defecto es el siguiente de la secuencia.

Si omitimos el valor correspondiente al título:

 insert into libros (autor,editorial,precio,cantidad)
  values('Juan Perez','Planeta',28.50,50);

MySQL insertará una cadena vacía, porque el valor por defecto de un campo de tipo caracter definido como "not null" es ese y para el código, seguirá con la secuencia.

Lo mismo sucede si no ingresamos un valor para la editorial:

 insert into libros (titulo,autor,precio,cantidad)
  values('Aprenda PHP','Alberto Lopez',55.40,150);

Se almacenará una cadena vacía.

Si omitimos el valor correspondiente al autor:

 insert into libros (titulo,editorial,precio,cantidad)
  values ('El gato con botas','Emece',15.6,150);

Se guardará "Desconocido" ya que éste es el valor por defecto que explicitamos al definir el campo.

Si omitimos el valor correspondiente al precio:

 insert into libros (titulo,autor,editorial,cantidad)
  values ('El aleph','Borges','Emece',200);

Se guardará "1.11" ya que éste es el valor por defecto que explicitamos al definir el campo.

Si omitimos el valor correspondiente a la cantidad:

 insert into libros (titulo,autor,editorial,precio)
  values('Alicia a traves del espejo','Lewis Carroll', 'Emece',34.5);

el valor que se almacenará será 0, porque con la cláuslua "default" establecimos este valor por defecto para este campo.

También podemos usar "default" para dar el valor por defecto a los campos en sentencias "insert", por ejemplo:

 insert into libros (titulo,autor,editorial,precio,cantidad)
  values ('El gato con botas',default,'Planeta',default,100);



Retornar