domingo, 8 de abril de 2012

17 - Tipos de datos (texto)

Ya explicamos que al crear una tabla debemos elegir la estructura adecuada, esto es, definir los campos y sus tipos más precisos, según el caso.

Hasta ahora hemos visto 3 tipos de datos: varchar, integer (con y sin signo) y float (con y sin signo). Hay más tipos, incluso, subtipos.

Para almacenar TEXTO usamos cadenas de caracteres. Las cadenas se colocan entre comillas simples.

Podemos almacenar dígitos con los que no se realizan operaciones matemáticas, por ejemplo, códigos de identificación, números de documentos, números telefónicos. Tenemos los siguientes tipos:

1) varchar(x): define una cadena de caracteres de longitud variable en la cual determinamos el máximo de caracteres con el argumento "x" que va entre paréntesis. Su rango va de 1 a 255 caracteres. Un varchar(10) ocupa 11 bytes, pues en uno de ellos almacena la longitud de la cadena. Ocupa un byte más que la cantidad definida.

2) char(x): define una cadena de longitud fija, su rango es de 1 a 255 caracteres. Si la cadena ingresada es menor a la longitud definida (por ejemplo cargamos 'Juan' en un char(10)), almacena espacios en blanco a la derecha, tales espacios se eliminan al recuperarse el dato. Un char(10) ocupa 10 bytes, pues al ser fija su longitud, no necesita ese byte adicional donde guardar la longitud. Por ello, si la longitud es invariable, es conveniente utilizar el tipo char; caso contrario, el tipo varchar.

Ocupa tantos bytes como se definen con el argumento "x". Si ingresa un argumento mayor al permitido (255) aparece un mensaje indicando que no se permite y sugiriendo que use "blob" o "text". Si omite el argumento, coloca 1 por defecto.

3) blob o text: bloques de datos de 60000 caracteres de longitud aprox. No lo veremos por ahora.
Para los tipos que almacenan cadenas, si asignamos una cadena de caracteres de mayor longitud que la permitida o definida, la cadena se corta. Por ejemplo, si definimos un campo de tipo varchar(10) y le asignamos la cadena 'Buenas tardes', se almacenará 'Buenas tar' ajustándose a la longitud de 10.

Es importante elegir el tipo de dato adecuado según el caso, el más preciso. Por ejemplo, si vamos a almacenar un caracter, conviene usar char(1), que ocupa 1 byte y no varchar(1), que ocupa 2 bytes.

Tipo  Bytes de almacenamiento
_______________________________________
char(x)  x
varchar(x) x+1
 
 


Problema Resuelto:

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.

Eliminamos la tabla "visitantes", si existe.

Creamos con la siguiente estructura:

create table visitantes(
  nombre varchar(30),
  edad integer unsigned,
  sexo char(1),
  domicilio varchar(30),
  ciudad varchar(20),
  telefono varchar(11),
  montocompra float unsigned
 );
 
Note que definimos el campo "sexo" de tipo "char", porque necesitamos solamente 1 caracter "f" o "m", que siempre será fijo, con esta definición ocupamos un byte.


Problema Propuesto:
 
Una concesionaria de autos vende autos usados y almacena los datos de los 
autos en una tabla llamada "autos".

1- Elimine la tabla "autos" si existe.

2- Cree la tabla con la siguiente estructura: 
 
create table autos(
  patente char(6),
  marca varchar(20),
  modelo char(4),
  precio float unsigned,
  primary key(patente)
 );

3- Ingrese los siguientes registros:
  (patente,marca,modelo,precio)
  ACD123,Fiat 128,1970,15000
  ACG234,Renault 11,1990,40000
  BCD333,Peugeot 505,1990,80000
  GCD123,Renault Clio,1990,70000
  BCC333,Renault Megane,1998,95000
  BVF543,Fiat 128,1975,20000

Hemos definido el campo "patente" de tipo "char" y no "varchar" 
porque la cadena de caracteres siempre tendrá la misma longitud 
(6 caracteres), con esta definición ocupamos 6 bytes, si lo 
hubiésemos definido como "varchar(6)" ocuparía 7 bytes. Lo 
mismo sucede con el campo "modelo", en el cual almacenaremos 
el año, necesitamos 4 caracteres fijos. Para el campo "precio" 
definimos un float sin signo porque los valores nunca serán negativos.

4- Seleccione todos los autos del año 1990:
 
5- Seleccione todos los autos con precio superior a 50000: 
 
 
 
Otros problemas: 
Una empresa almacena los datos de sus clientes en una tabla 
llamada "clientes".

1- Elimine la tabla "clientes" si existe:
 

2- Créela con los siguientes campos y clave:
 
create table clientes(
  documento char(8),
  apellido varchar(20),
  nombre varchar(20),
  domicilio varchar(30),
  telefono varchar (11),
  primary key(documento)
 );

3- Analice la definición de los campos. Se utiliza char(8) 
para el documento porque siempre constará de 8 caracteres. 
Para el número telefónico se usar "varchar" y no un tipo numérico porque 
si bien es un número, con él no se realizarán operaciones matemáticas.

4- Ingrese algunos registros:
 (documento,apellido,nombre,domicilio,telefono)
  2233344,Perez,Juan,Sarmiento 980,4342345
  2333344,Perez,Ana,Colon 234
  2433344,Garcia,Luis,Avellaneda 1454,4558877
  2533344,Juarez,Ana,Urquiza 444,4789900

5- Seleccione todos los clientes de apellido 'Perez'.

6- seleccione el apellido, domicilio y teléfono de todas las 'Ana'.
 

No hay comentarios:

Publicar un comentario