Si al insertar registros no se especifica un valor para un campo, se inserta su valor por defecto implícito según el tipo de dato del campo. Por ejemplo:
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", MySQL insertará el valor por defecto, como "codigo" es un campo "auto_increment", el valor por defecto es el siguiente de la secuencia.
Si omitimos el valor correspondiente al autor:
insert into libros (titulo,editorial,precio,cantidad) values('Java en 10 minutos','Paidos',25.7,200);
MySQL insertará "null", porque el valor por defecto de un campo (de cualquier tipo) que acepta valores nulos, es "null".
Lo mismo sucede si no ingresamos el valor del precio:
insert into libros (titulo,autor,editorial,cantidad) values('Java en 10 minutos','Juan Pereyra',Paidos',150);
MySQL insertará el valor "null" porque el valor por defecto de un campo (de cualquier tipo) que acepta valores nulos, es "null".
Si omitimos el valor correspondiente al título:
insert into libros (autor,editorial,precio,cantidad) values ('Borges','Paidos',25.7,200);
MySQL guardará una cadena vacía, ya que éste es el valor por defecto de un campo de tipo cadena definido como "not null" (no acepta valores nulos).
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 el campo "precio" es de tipo numérico "not null" y el valor por defecto de los tipos numéricos que no aceptan valores nulos es 0.
Podemos establecer valores por defecto para los campos cuando creamos la tabla. Para ello utilizamos "default" al definir el campo. Por ejemplo, queremos que el valor por defecto del campo "precio" sea 1.11 y el valor por defecto del campo "autor" sea "Desconocido":
create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, autor varchar(30) default 'Desconocido', precio decimal(5,2) unsigned default 1.11, cantidad int unsigned not null, primary key (codigo) );
Si al ingresar un nuevo registro omitimos los valores para el campo "autor" y "precio", MySQL insertará los valores por defecto definidos con la palabra clave "default":
insert into libros (titulo,editorial,cantidad) values('Java en 10 minutos','Paidos',200);
MySQL insertará el registro con el siguiente valor de la secuencia en "codigo", con el título, editorial y cantidad ingresados, en "autor" colocará "Desconocido" y en precio "1.11".
Entonces, si al definir el campo explicitamos un valor mediante la cláusula "default", ése será el valor por defecto; sino insertará el valor por defecto implícito según el tipo de dato del campo.
Los campos definidos "auto_increment" no pueden explicitar un valor con "default", tampoco los de tipo "blob" y "text".
Los valores por defecto implícitos son los siguientes:
-para campos de cualquier tipo que admiten valores nulos, el valor por defecto "null";
-para campos que no admiten valores nulos, es decir, definidos "not null", el valor por defecto depende del tipo de dato:
-para campos numéricos no declarados "auto_increment": 0;
-para campos numéricos definidos "auto_increment": el valor siguiente de la secuencia, comenzando en 1;
-para los tipos cadena: cadena vacía.
Ahora al visualizar la estructura de la tabla con "describe" podemos entender un poco más lo que informa cada columna:
describe libros;
"Field" contiene el nombre del campo; "Type", el tipo de dato; "NULL" indica si el campo admite valores nulos; "Key" indica si el campo está indexado (lo veremos más adelante); "Default" muestra el valor por defecto del campo y "Extra" muestra información adicional respecto al campo, por ejemplo, aquí indica que "codigo" está definido "auto_increment".
También se puede utilizar "default" para dar el valor por defecto a los campos en sentencias "insert", por ejemplo:
insert into libros (titulo,autor,precio,cantidad) values ('El gato con botas',default,default,100);
Problema Resuelto:
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) );
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);
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);
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);
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);
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:
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);
Problema Propuesto:
Un comercio que envía pizzas y empanadas a domicilio registra
los pedidos diariamente en una tabla llamada "pedidos" con los
siguientes datos: - numero de pedido, autoincrementable, entero positivo comienza
en 1 y menor a 200 aprox. - nombre: pizza o empanada, por defecto "empanada", - tipo: por ejemplo, si es pizza: especial, muzarela, etc., si
son empanadas: arabes, pollo, jamón y queso, criollas, etc. - precio: precio por unidad, valor con decimales que no supera
los $99.99 y será siempre mayor a 0, por defecto "1", - cantidad: cantidad de articulos, entero positivo desde 1 e
inferior a 200 aprox., por defecto "12" - domicilio del cliente. 1- Elimine la tabla "pedidos" si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo. 3- Ingrese los siguientes registros: (nombre,tipo,precio,cantidad,domicilio) piza,muzarela,4.00,3,Sarmiento 235 arabe,1.00,24,Urquiza 296 empanada,salteña,Colon 309 arabe,San Martin 444 piza,especial,4.00,Avellaneda 395 4- Muestre todos los campos de todos los pedidos para ver cómo se
guardaron los datos no ingresados.
Otros problemas:
A) Un comercio que tiene un stand en una feria registra
en una tabla llamada "visitantes" algunos datos de las
personas que visitan o compran en su stand para luego
enviarle publicidad de sus productos. 1- Elimine la tabla "visitantes", si existe. 2- Cree la tabla con la siguiente estructura:
create table visitantes( nombre varchar(30) not null, edad tinyint unsigned, sexo char(1) default 'f', domicilio varchar(30), ciudad varchar(20) default 'Cordoba', telefono varchar(11), mail varchar(30) default 'no tiene', montocompra decimal (6,2) ); 4- Ingrese algunos registros sin especificar valores
para algunos campos para ver cómo opera la cláusula "default". 5- Muestre todos los registros. B) Una pequeña biblioteca de barrio registra los préstamos
de sus libros en una tabla llamada "prestamos". En ella almacena
la siguiente información: título del libro, documento de identidad del socio a quien se le presta el libro, fecha
de préstamo, fecha en que tiene que devolver el libro y si
el libro ha sido o no devuelto. 1- Elimine la tabla "prestamos" si existe. 2- Cree la tabla:
create table prestamos( titulo varchar(40) not null, documento char(8) not null, fechaprestamo date not null, fechadevolucion date, devuelto char(1) default 'n' ); 3- Ingrese algunos registros:
(titulo,documento,fechaprestamo,fechadevolucion) Manual de 1 grado,23456789,2006-08-10,2006-08-12 Alicia en el pais de las maravillas,23456789,2006-08-12,2006-08-14 El aleph,22543987,2006-08-15,2006-08-17 Manual de geografia 5 grado,25555666,2006-08-30,2006-09-01 4- Seleccione todos los registros para ver qué se guardó en el campo
"devuelto" para el cual no ingresamos datos.
No hay comentarios:
Publicar un comentario