domingo, 8 de abril de 2012

15 - Valores numéricos sin signo

Hemos visto algunos atributos extra para los campos.

Los campos de tipo entero pueden tener el atributo "auto_increment", que incrementa automáticamente el valor del campo en 1. 

Los campos de cualquier tipo aceptan el atributo "null" y "not null" con lo cual permiten o no valores nulos.
Otro atributo que permiten los campos de tipo numérico es "unsigned". 

El atributo "unsigned" (sin signo) permite sólo valores positivos. 

Si necesitamos almacenar edades, por ejemplo, nunca guardaremos valores negativos, entonces sería adecuado definir un campo "edad" de tipo entero sin signo:


edad integer unsigned;
 
Si necesitamos almacenar el precio de los libros, definimos un campo de tipo "float unsigned" porque jamás guardaremos un valor negativo.

Hemos aprendido que al crear una tabla, es importante elegir el tipo de dato adecuado, el más preciso, según el caso. Si un campo almacenará sólo valores positivos, es útil definir dicho campo con este atributo.

En los tipos enteros, "unsigned" duplica el rango, es decir, el tipo "integer" permite valores de -2000000000 a 2000000000 aprox., si se define "integer unsigned" el rango va de 0 a 4000000000 aprox.

Los tipos de coma flotante (float por ejemplo) también aceptan el atributo "unsigned", pero el valor del límite superior del rango se mantiene.

Problema Resuelto:

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

Elimine la tabla, si existe:

drop table if exists libros;
 
Cree la tabla con la siguiente estructura:

create table libros(
  codigo integer unsigned auto_increment,
  titulo varchar(20) not null,
  autor varchar(30),
  editorial varchar(15),
  precio float unsigned,
  cantidad integer unsigned,
  primary key (codigo)
 );
 
Al definir los campos especificamos si un campo numérico es "unsigned".

El atributo "unsigned" (sin signo) sólo puede agregarse a un campo de tipo numérico (enteros o comas flotantes) permitiendo para dicho campo sólo valores positivos.

Si visualizamos la estructura de la tabla con "describe", vemos que en el tipo de dato aparece este atributo:

Field  Type
_________________________________
codigo  int(10) unsigned
titulo  varchar(20)
autor  varchar(30)
editorial varchar(15)
precio  float unsigned
cantidad int(10) unsigned

Para almacenar el código de los libros, definimos un campo de tipo "integer unsigned" porque guardaremos valores a partir de 1 en adelante (no valores negativos).

Para almacenar el precio de los libros, definimos un campo de tipo "float unsigned" porque jamás guardaremos un valor negativo.

Para almacenar la cantidad de libros disponibles, definimos un campo de tipo "integer unsigned" porque el menor valor posible será 0, nunca negativos.


Problema Propuesto:
 
Trabaje con la tabla que almacena los datos sobre películas.

1- Elimine la tabla "peliculas", si existe.

2- Tenga en cuenta el rango de valores que almacenará cada campo:
 -codigo: entero a partir de 1, autoincrementable,
 -titulo: caracteres de 40 de longitud, no nulo,
 -actor: cadena de 20,
 -duracion: entero positivo,
 -clave primaria: codigo.

3- Cree la tabla y defina cada campo según el rango de valores que almacenará: 
 
create table peliculas(
  codigo integer unsigned auto_increment,
  titulo varchar(40) not null,
  actor varchar(20),
  duracion integer unsigned,
  primary key(codigo)
 );

4- Visualice la estructura de la tabla.


Otros problemas:

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 y al definir los campos tenga en cuenta el rango 
de valores que almacenará cada campo:
 
 - nombre: cadena de 30 caracteres,
 - edad: entero positivo. No hay edades con valores negativos.
 - sexo: 'f' o 'm',
 - domicilio: cadena de 30,
 - ciudad: cadena de 30,
 - teléfono: cadena de 11,
 - monto compra: valor con decimales mayor o igual a cero. 
No hay compras con monto negativo.

3- Visualice la estructura de la tabla.

No hay comentarios:

Publicar un comentario