Hasta ahora hemos visto 2 tipos de datos para almacenar valores numéricos: integer (con y sin signo) y float (con y sin signo). Existe variedad de tipos numéricos para representar enteros, negativos, decimales.
Para almacenar valores enteros, por ejemplo, en campos que hacen referencia a cantidades, precios, etc., usamos: 1) integer(x) o int(x): su rango es de -2000000000 a 2000000000 aprox. El tipo "int unsigned" va de 0 a 4000000000. El tipo "integer" tiene subtipos:
- mediumint(x): va de –8000000 a 8000000 aprox. Sin signo va de 0 a 16000000 aprox.
- smallint(x): va de –30000 a 30000 aprox., sin signo, de 0 a 60000 aprox.
- tinyint(x): define un valor entero pequeño, cuyo rango es de -128 a 127. El tipo sin signo va de 0 a 255.
- bool o boolean: sinónimos de tinyint(1). Un valor cero se considera falso, los valores distintos de cero, verdadero.
- bigint(x): es un entero largo. Va de –9000000000000000000 a 9000000000000000000 aprox. Sin signo es de 0 a 10000000000000000000.
Para almacenar valores con decimales utilizamos:
2) float (t,d): número de coma flotante. Su rango es de -3.4e+38 a –1.1e-38 (9 cifras).
3) decimal o numeric (t,d): el primer argumento indica el total de dígitos y el segundo, la cantidad de decimales. El rango depende de los argumentos, también los bytes que ocupa. Si queremos almacenar valores entre 0.00 y 99.99 debemos definir el campo como tipo "decimal (4,2)". Si no se indica el valor del segundo argumento, por defecto es 0. Para los tipos "float" y "decimal" se utiliza el punto como separador de decimales.
Todos los tipos enteros pueden tener el atributo "unsigned", esto permite sólo valores positivos y duplica el rango. Los tipos de coma flotante también aceptan el atributo "unsigned", pero el valor del límite superior del rango no se modifica.
Es importante elegir el tipo de dato adecuado según el caso, el más preciso. Por ejemplo, si un campo numérico almacenará valores positivos menores a 10000, el tipo "int" no es el más adecuado, porque su rango va de -2000000000 a 2000000000 aprox., conviene el tipo "smallint unsigned", cuyo rango va de 0 a 60000 aprox. De esta manera usamos el menor espacio de almacenamiento posible.
Tipo Bytes de almacenamiento _______________________________________ tinyint 1 smallint 2 mediumint 3 int 4 bigint 8 float 4 decimal(t,d) t+2 si d>0, t+1 si d=0 y d+2 si t<d
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(20) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad smallint unsigned, primary key (codigo) );
Note que definimos el campo "cantidad" de tipo "smallint unsigned", esto es porque los
valores para este campo serán siempre positivos (mayores o iguales a 0), además la cantidad
disponible no superará los 60000 aprox., así que no es adecuado usar int (cuyo rango llega
hasta 4000 millones aprox.), así ocupamos menos espacio (3 bytes para mediumint contra 4
bytes para int). Es importante elegir el tipo de dato más preciso.
Como en el campo "precio" almacenaremos valores entre 0.00 y 999.99 definimos el campo como tipo "decimal (5,2)", así evitamos tantos decimales innecesarios que teníamos antes con el tipo "float".
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: piza o empanada, - tipo: por ejemplo, si es pizza: especial, muzarela, etc., si son
empanadas: salteñas, picantes,arabes, etc. - precio: precio por unidad, valor con decimales que no supera los
$99.99 y será siempre mayor a 0, - cantidad: cantidad de articulos, entero positivo desde 1 e inferior
a 200 aprox. - domicilio del cliente. 1- Elimine la tabla "pedidos" si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para cada campo.
Otros problemas:
A) El departamento de Meteorología de una ciudad tiene almacenados
en una tabla las estadísticas de temperatura y precipitaciones de
varias ciudades del mundo. La tabla tiene registrados los siguientes datos:
Ciudad País Temperatura Maxima Temp.Min Precipitaciones Media Anual _____________________________________________________________________________________ Bs. As. Argentina 30 8 1200 Canberra Australia 28 0 620 Brasilia Brasil 27 13 1500 Madrid España 31 2 400 Mexico Mexico 23 7 850 Moscu Rusia 24 -13 690 Oslo Noruega 28 -16 750 Ottawa Canadá 26 -16 900 Santiago Chile 29 3 300 Viena Austria 25 -4 600
1- Elimine la tabla "estadisticas". 2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos
descriptos arriba: - ciudad y país: cadena de caracteres, - temperaturas (máxima y mínima): entero desde -20 hasta 40 aprox. - precipitaciones media anual: desde 0 a 2000 aprox. B) Un instituto de física que realiza investigaciones acerca de los gases
guarda en una tabla las temperaturas críticas y la presión crítica de los
mismos. La tabla contiene estos registros:
Gas Temperatura Crítica Presión Crítica ________________________________________________________ Helio -269.7 2.26 Hidrógeno -239.9 12.8 Nitrógeno -147.1 33.5 Oxígeno -120.0 50.1 Dióx. de carb. 31.3 72.9 Amoníaco 132.4 111.5 Vapor de agua 374.2 218.0
1- Elimine la tabla "gases" si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar los
datos descriptos arriba: - Gas: cadena, - Temperatura Crítica: valores decimales desde -300 hasta 400 aprox., - Presión Crítica: valores decimales positivos hasta 300 aprox. C) Un banco tiene registrados las cuentas corrientes de sus clientes en
una tabla llamada "cuentas".
La tabla contiene estos datos:
Número de Cuenta Documento Nombre Saldo ______________________________________________________________ 1234 22555666 Perez Luis 2000.60 2566 33558778 Pereyra Maria 5050.00 3456 34567765 Lopez Susana 10.00 3900 34590697 Torres Marcos -50.50 4560 35098098 Juarez Ana -232.00
1- Elimine la tabla "cuentas" si existe. 2- Cree la tabla eligiendo el tipo de dato adecuado para almacenar
los datos descriptos arriba: - Número de cuenta: entero positivo, no nulo, - Documento del propietario de
la cuenta: cadena de caracteres de 8 de longitud (siempre 8), no nulo - Nombre del propietario de la
cuenta: cadena de caracteres, - Saldo de la cuenta: valores positivos y negativos altos.
No hay comentarios:
Publicar un comentario