domingo, 8 de abril de 2012

23 - Atributo zerofill en una columna de una tabla.

Cualquier campo numérico puede tener otro atributo extra "zerofill".

"zerofill" rellena con ceros los espacios disponibles a la izquierda.

Por ejemplo, creamos la tabla "libros", definiendo los campos "codigo" y "cantidad" con el atributo "zerofill":
 
create table libros(
  codigo int(6) zerofill auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  cantidad smallint zerofill,
  primary key (codigo)
 );
 
Note que especificamos el tamaño del tipo "int" entre paréntesis para que muestre por la izquierda ceros, cuando los valores son inferiores al indicado; dicho parámetro no restringe el rango de valores que se pueden almacenar ni el número de digitos. 

Al ingresar un valor de código con menos cifras que las especificadas (6), aparecerán ceros a la izquierda rellenando los espacios; por ejemplo, si ingresamos "33", aparecerá "000033". Al ingresar un valor para el campo "cantidad", sucederá lo mismo.

Si especificamos "zerofill" a un campo numérico, se coloca automáticamente el atributo "unsigned".
Cualquier valor negativo ingresado en un campo definido "zerofill" es un valor inválido.


Problema Resuelto: 

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

Eliminamos la tabla, si existe:

drop table if exists libros;
 
Creamos la tabla:

create table libros(
  codigo int(6) zerofill auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  cantidad smallint zerofill,
  primary key (codigo)
 );
 
Visualizamos la estructura de la tabla:

describe libros;
 
Vemos que en la columna "Type" se muestra el atributo "zerofill" en los campos en los cuales lo especificamos.
Ingresemos algunos registros:

insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Martin Fierro','Jose Hernandez','Planeta',34.5,200);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Aprenda PHP','Mario Molina','Emece',45.7,50);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Cervantes y el quijote','Borges','Paidos',23,40);
 
Veamos cómo se guardaron los datos:

select * from libros;
 
Los valores de código están rellenados a la izquierda con ceros; también los del campo "cantidad".
Probemos ingresar un valor para código saltando la secuencia:

insert into libros (codigo,titulo,autor,editorial,precio,cantidad)
 values('545','El aleph', 'Borges', 'Emece',33,20);
 
Veamos cómo lo guardó:

select * from libros;
 
Ingresemos un valor negativo para los campos definidos "zerofill":

insert into libros (codigo,titulo,autor,editorial,precio,cantidad)
  values(-400,'Matematica estas ahi', 'Paenza', 'Paidos',15.2,-100);
Veamos lo que sucedió:

select * from libros;
 
Como los valores son inválidos, almacena los valores por defecto según el tipo; para el campo "auto_increment" sigue la secuencia y para el campo "cantidad" guarda "00000".



Problema Propuesto:
 
Un banco tiene registrados las cuentas corrientes de sus clientes 
en una tabla llamada "cuentas".

1- Elimine la tabla, si existe.

2- Cree la tabla:
 
 create table cuentas(
  numero int(8) zerofill auto_increment,
  documento char(8) not null,
  nombre varchar(30),
  saldo decimal(9,2),
  primary key(numero)
 );

3- Visualice la estructura de la tabla:
 
note que en la columna que muestra el tipo aparece "zerofill" 
en el campo "numero".

4- Ingrese los siguientes registros:
 (numero,documento,nombre,saldo)
   1234,22333444,Juan Perez,2000.60
   2566,23333444,Maria Pereyra,5050
   5987,24333444,Marcos Torres,200
   14434,25333444,Ana Juarez,8000.60

5- Vea cómo se guardaron los números de cuenta:
 
6- Ingrese un valor negativo para el número de cuenta: 
 
(numero,documento,nombre,saldo)
-1234,27333444,Luis Duarte,2800
 
 note que no lo toma y sigue la secuencia.

Otros problemas:

Trabaje con la tabla que almacena los datos sobre películas, 
llamada "peliculas".

1- Elimine la tabla si existe.

2- Créela con la siguiente estructura: 
 
create table peliculas(
  codigo int(4) zerofill auto_increment,
  titulo varchar(30) not null,
  actor varchar(20),
  duracion tinyint zerofill default 90,
  primary key (codigo)
 );

3- Vea la estructura de la tabla:
 
note que el atributo "zerofill" aparece en los campos 
"codigo" y "duracion", en la columna que describe el 
tipo de cada dato.

4- Ingrese algunos registros.

5- Ingrese un valor de código negativo.

6- Ingrese un valor de duración negativo.


      





No hay comentarios:

Publicar un comentario