martes, 17 de enero de 2012

Tipos de Datos

Bueno continuando con nuestro tema hoy les explicaré sobre los tipos de datos que podemos utilizar en Oracle al momento de crear nuestros objetos, 

TIPO TEXTO
  • VARCHAR2(n) para textos con una longitud variable con un máximo de 4000 caracteres.
  • CHAR(n) para textos de longitud fija con un máximo de 2000 caracteres.
Dentro de los paréntesis se debe de indicar el tamaño que va a tener el tipo de dato, en el caso de VARCHAR2 es obligatorio, en el caso del tipo CHAR este es opcional y en caso de no escribirlo toma como valor 1. por ejemplo:

  • Nombre      varchar2(25)
  • Sexo           char

En este caso estoy declarando un campo llamado NOMBRE de tipo texto que me va a permitir escribir como máximo 25 caracteres. y un campo llamado SEXO que me permite ingresar un caracter.

En el caso de crear los campos y los tipos de datos es recomendable dejar suficiente espacio para los valores, esto sin exagerar, específicamente el tipo de dato varchar2 es muy flexible porque este no malgasta el espacio en la BD, ya que si el texto es mas pequeño que el tamaño indicado el resto del espacio se ocupa.

Explicado este con un ejemplo sencillo es lo siguiente, cuando tenemos 5 buses con espacio para 25 pasajeros en cada uno.

Entonces si los buses fueran de tipo char y a cada bus solo abordaran 5 pasajeros, cada bus partiría hacia su destino con 20 asientos vacíos, que desperdicio de espacio verdad. 

En cambio si los buses fueran de tipo varchar, ingresan los primeros 5 pasajeros, y queda 20 asientos libres Oracle al ver el espacio disponible no utiliza mas buses sino optimiza el espacio disponible que queda en el primer bus y de esta manera un solo bus partiría con los 25 pasajeros hacia su destino. 

TIPO NUMERO
Se utiliza, el tipo NUMBER ya que este es un tipo versátil, porque permite representar a todo tipo de números y toma encuenta todos los numeros que esten dentro de este rango:

 10^-130   y 999999999999 * 10^128

Los números decimales, se declaran con el comando NUMBER(p,s) la "P" indica la cantidad de dígitos en total que puede tener y la "S" la cantidad de decimales que va a tener el número, por ejemplo: number(4,2) este indica que acepta un numero que tenga un máximo de 4 dígitos y que el máximo de dígitos en los decimales es de 2, se podría decir que acepta un número como este: 98.43  tiene un total de 4 dígitos como máximo y después del punto solo hay dos decimales.

Como información adicional Oracle toma en cuenta el punto como el separador de los decimales. y para números enteros utilizaremos NUMBER(P) donde "P" es la cantidad de dígitos máximo que acepta y no se indica la cantidad de decimales. 

A continuación les pongo unos ejemplos de como se almacena el número que escribamos según el tipo de comando que utilicemos, veamos.

Formato
No. Escrito por el usuario
Se almacena como
number
345255.345
345255.345
number(9)
345255.345
345255
number(9,2)
345255.345
345255.35
number(7)
345255.345
Da error
number(7,-2)
345255.345
345300
number(7,2)
345255.345
Da error

Bueno, por el momento dejaré el tema acá, luego seguiré explicando los demás tipos de datos.


FECHAS Y HORAS


Para esto podemos utilizar el comando DATE,  ya que este es el que permite almacenar las fechas incluidas las  horas según el formato que utilicemos, por ejemplo si queremos almacenar la fecha 31/12/2011 utilizaríamos el siguiente formato DD/MM/YYYY estos separados con una diagonal o con guiones.Otro ejemplo si queremos guardar la hora 07:35:45 utlizamos el formato HH:MI:SS separados por los dos puntos.

Si en su momento queremos almacenar la fecha actual, utilizaremos el comando SYSDATE ya sea al realizar una consulta o al hacer inserciones en la BD.

2 comentarios:

Unknown dijo...

Que onda, que bueno que estes compartiendo el conocimiento, yo nunca he utilizado oracle, pero al parecer es muy parecido a sql o mysql
Haber si podes poner el programa para descargarlo.

Unknown dijo...

Claro con gusto y realmente la respuesta es si y no porque un buen porcentaje de cosas cambian, con respecto al software con gusto lo haré el problema que tengo es que no tengo muy ben ancho de banda para subirlo.

Y pues tratando de compartir con los demás mis pequeños conocimientos sobre el gran mundo de oracle