22 - Atributo default en una columna de una tabla. |
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);