jueves, 2 de julio de 2009

Temas de Base de Datos

Leer Mas...

Tipos de Datos Especiales

Tipos de Datos Especiales

Estos tipos de datos se utilizan para almacenar data binaria como imágenes, audio, cadenas de bytes, etc. Incluye los tipos raw, long raw, blob, clob, ncob, bfile. También tenemos un tipo de dato que pemrite asignarle un identificador único a cada fila de la base de datos, lso tipos de base de datos los tipos rowid, urowid.

raw(n): Almacena datos binarios de longitud fija. Los datos de tipo raw no implican conversiones de caracter. La longitud máxima de una variable de este tipo es de 32767 bytes en PL/SQL. Sin embargo en un campo de una tabal de raw sólo admite 2000 bytes en Oracle 8i. Se encuentra en desuso, se sustituye por los tipos LOB.

long raw: Almacenan cadenas binarias de ancho variable. Análogo al tipo de dato long, pero como el anterior no implican conversiones de caracter. Almacena ahsta 2Gb. Se encuentra en desuso, se le sustituye por los tipos LOB.
lob (blob, clob, nclob, bfile): Permite almacenar y manipular bloques grandes de datos no estructurados (tales como texto, imágenes, videos, sonidos, etc) en formato de binario o caracter. Una tabla puede contener varias columnas de tipo LOB. Soportan acceso aletorio. Las tablas con columnas de tipo LOB no pueden ser replicadas.

blob (binary large object) : El tamaño máximo es de (4Gb - 1) * tamaño del data block.
clob (caracter large object) : El tamaño máximo es de (4Gb - 1) * tamaño del data block.
nclob (caracter large object conteniendo caracteres Unicode) : El tamaño máximo es de (4Gb-1)* tamaño del data block.
bfile: Puntero a un archivo binario grande almaceado fuera de la base de datos. El tamaño máximo es de 4Gb.
rowid: Datos binarios de ancho fijo. Este tipo de datos sirve para almacenar identificadores únicos de registros. Este identificador es con el que trabaja internamente la base de datos Oracle para identificar dichos registros.
El rowid de una fila es un identificador único para una fila dentro de una base de datos. No hay 2 filas con el mismo rowid. Este tipo de dato sirve para guardar punteros a filas concretas.
Rowid físico almacena la dirección de la fila en las tablas, las tablas en clúster, los índices, excepto en los índices organizados (IOT).
Rowid lógico almacena la dirección de fila en tablas de índice organizado(IOT).

Ejemplo:

Valor:"AAAIugAAJAAC4AhAAI"

El formato el el siguiente: Para "OOOOOOFFFBBBBBBRRR"
OOOOOO: segmento de la base de datos(AAAIug en el ejemplo). Todos los objetos que estén en el mismo esquema y en el mismo segmento tendrán el mismo valor.
FFF: el número de fichero del tablespace relativo que contiene la fila (fichero AAJ en el ejemplo).
BBBBBB: el bloque de datos que contiene la fila (bloque AAC4Ah en el ejemplo). El número de bloque es relativo a su fichero de datos, no al tablespace. Por lo tanto, 2 filas con números de bloque iguales podrían residir en diferentes datafiles del mismo space.
RRR:el número de fila en el bloque (fila AAI en el ejemplo).

urowid(n): Cadena de base 64 que representa la dirección única de una fila en una tabla Indexada. El valor máximo para n es de 4000 bytes, siendo éste el valor predeterminado. Admite rowid a tablas que no sean de Oracle, tablas externas. Admite tanto rowid lógicos como físicos.

Leer Mas...

Tipos de Datos de Fecha y Hora e Intervalos

Tipos de Datos de Fecha y Hora e Intervalos

Los tipos de datos fecha y hora son date, timestamp, timestamp whit time zone, timestamp whit local time zone. Los tipos de datos intervalo son y interval year to monthinterval day to second.

date: Guarda información sobre la fecha, hora, día, mes, año, hora, minuto y segundo. Las variables de este tipo no son capaces de almacenar milisegundos. Su tamaño es de 7 bytes.
Almacena un valor de fecha y hora en el rango del 1 de enro de 4712 a.C al 31 de diciembre de 9999 d.C.
Para un tipo de dato date, Oracle almacena internamente los siguientes datos: f Siglo f Año f Mes f Día f Hora f Minuto f Segundo. El formato por defectos de las fechas es 'DD-MON-YYYY'. Esto es de 2 dígitos para el día, las 3 primeras siglas del mes(depende del idioma instalado), 4 dígitos del año.
Ejemplo:
'1-JAN-2005' o '2-DEC-1997'. Ese formato puede cambiar en cualquier momento.
Internamente una fecha se almacena como el número de días desde cierto punto de inicio (por ejemplo el año 0). Esto permite que las fechas pueden ser tratadas en operaciones aritméticas normales:
'1-JAN-2005' + 8 ='9-JAN-2005' '19-FEB-2000' - 15 = '4-FEB-2000'


timestamp[p]: Con las características del tipo date pero además permite almacenar fracciones de segundo. El parámetro p es la precisión que debe ser un número entre 0 y 9.el valor por defecto es 6). Incluye año, mes, día, hora, minuto y segundos.
Ejemplo:
timestamp(5)


timestamp[p] whit time zone: Almacena datos de tipo hora incluyendo la zona horaria(explícita), fraccionando los segundos. No soportado por Oracle 8i. El parámetro p es la precisión que debe ser un número entre 0 y 9.el valor por defecto es 6). Incluye año, mes, día, hora, minuto y segundos, con desplazamiento de zona horaria.
Ejemplo:
timestamp(6) whit time zone

timestamp[p] whit local time zone: Almacena datos de tipo hora, el cual debe ser un número entre 0 y 9(el valor por defecto es 6), incluyendo la zona horaria local (relativa). No soportado por Oracle 8i. Incluye año, mes, día, hora, minuto y segundos, con una zona horaria expresada como la zona horaria actual.
Ejemplo:
timestamp(8) whit local time zone
Cuando usa SELECT para mostrar los datos de este tipo, el valor de la hora será ajustado a la zona horaria de la sesión actual.

interval year(precision_año) to month: No soportado por Oracle 8i. Período de tiempo almacenado en años y meses con el número de dígitos para la parte del año especificado por precision_año.
Ejemplo:
interval year(4) to month.

interval day(p) to second(d): No soportado por Oracle 8i. El parámetro p debe ser un número entre 0 y 9(el valor por defecto es 2). El valor de d debe ser un número entre 0 y 9 (el valor por defecto es 6). Período de tiempo almacenado en días, horas, minutos y segundos.
Ejemplo:
interval day(2) to second(6).


Leer Mas...

Tipos de Datos Numéricos

Tipos de Datos Numéricos

Los tipos de datos numéricos almacenan número de punto fijo y punto flotante positivos y negativos, los vlaores cero(0) e infinito, y valores que son el resultado no definido de una operación,tal como "not a number" o NAN.

Los datos de tipo numérico son number, binary_float, binary_double.

number (p,s): Puede contener un valor numérico entero o de punto flotante, que pueden ir desde 1.0 x 10^-130 hasta 9.9....(38 nueves)...9 x 10^125. Donde p es la precisión y s es la escala. La precisión es el número de dígitos del valor, y la escala es la cantidad de dígitos a la derecha del punto decimal. Oracle garantiza los datos con precisiones de 1 a 38 y la escala de 84 a 127.
Para declarar un tipo de dato number en un CREATE o UPDATE es suficiente con:
nombre_columna number;
Opcionalmente se le puede indicar la precisión (número total de dígitos) y la escala (número de dígitos a la derecha de la coma, decimales, los cogerá de la precisión indicada):

nombre_columna number(precision, escala)
Si no se indica la precisión se tomará en función del número a guardar, si no se indica la escala se tomará escala cero.

Ejemplo:
--number(precison, escala):
saldo number(16,2)
/*Indica que puede almacenar un valor numérico de 16 posiciones, 2 de ellas decimales. Es decir 14 enteros y 2 decimales.*/

binary_float: Número de punto flotante de 32-bit.

binary_double: Número de punto flotante de 64-bit.

Leer Mas...

miércoles, 1 de julio de 2009

Tipos de Datos Caracter

Tipos de Datos Caracter


Los tipos de datos caracter almacenan data alfanumérica como palabras y texto sin formato. La data caracter es almacenada en cadenas con vectotres de bytes correspondientes a un juego de caracteres, tal como ASCII o EBCDIC, que es especificado al momento de crear la base de datos.


Los tipos de tipo caracter Oracle son char, nchar, nvarchar2, varchar, varchar2, long.

varchar(n): En Oracle8 es equivalente a varchar2, en futuras versiones permitirá distintos criterios de comparación.
varchar2(n): Guarda una cadena de longitud variable donde n es el número de caracteres a almacenar. El tamaaño del campo dependerá del valor que contenga. En PL/SQL el valor máximo de una variable de este tipo es de 32767 bytes, sin embargo las bases de datos Oracle sólo permiten campos de hasta 4000 bytes.

Ejemplo:
--varchar2(longitud_maxima)
nombre varchar2(20);

/*Indica que puede almacenar valores alfanumericos de hasta 20 posiciones.*/
/*Cuando la longitud de los datos sea menor a 20 no se rellenará con blancos*/

nvarchar2(n): Cadena de caracteres de longitud variable, donde n es el número de caractes a almacenar. Acumula valores alfanuméricos de longitud variable con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE.

char(n): Análogo al varcahr2 pero guarda cadenas de longitud fija, siempre ocupará lo mismo,independientemente del valor que contenga, donde n es el número de caracteres a almacenar, si no se especifica su valor por defecto es 1. Si se introduce un valor de 10 caracteres en un campo de char(100), se rellenará con espacions las 90 posiciones restantes.
En PL/SQL el valor máximo del tamaño de una variable de este tipo es de 32767 bytes, sin embargo la base de datos Oracle permiten columnas de hasta 2000 bytes. Si se intenta introducit un valor demasiado grande para el campo, se intentará los espacios finales, y si se cabe sin espacios, se introduce. Si aún así no cabe se retorna un error.

Ejemplo:
--char(longitud_maxima)
nombre char2(20);

/*Indica que puede almacenar valores alfanumericos de hasta 20 posiciones.*/
/*Cuando la longitud de los datos sea menor a 20 se rellenará con blancos*/


nchar(n): Almacena un valor alfanumérico de longitud fija con posibilidad de cambio de juego de caracteres, donde n es el número de caractes a almacenar. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE. Almacena hasta 32767 bytes en PLSQL y hasta 2000 bytes en Oracle 8i/9i.

long: Este tipo similar al varchar2, se trata de una cadena de longitud variable de hasta 32760 bytes. Los tipos de dato long de una base de datos Oracle son capaces de almacenar hasta 2 Gb. Este tipo de dato está obsoleto (en desuso). En Oracle8 y siguientes versiones se deben usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.
No se puede almacenar en clausulas WHERE, GROUP BY, ORDER BY, CONNECT BY ni DISTINCT.
Un tabla solo puede contener una columna de tipo long. Sólo soporta acceso secuencial.


En general usando varchar2 ahorramos espacio en comparación del uso de char
Un char (10) almacenará 'Pepe '
Un varchar2 (10) almacenará 'Pepe'


Leer Mas...

Tipos de Datos Oracle

Tipos de Datos en Oracle

Los tipos de datos soportados en Oracle se agrupan en los siguientes conjuntos:

  1. Tipos de datos caracter.
  2. Tipos de datos numéricos.
  3. Tipos de datos de fecha y hora e intervalos.
  4. Tipos de datos especiales.

Después de haber leído los distintos tipos de datos, un ejemplo de creación de tabla con alguno de estos tipos de datos de Oracle podría ser:


create table facturas{
clave char (10) primary key,
codigocliente number (9,2) not null,
importetotal number (10,2),
baseimponible number (10,2),
importeiva number (10,2),
porcentajeiva number (2,0),
observacion varchar2 (2000),
documentacion clob,
ficheroescaneado blob,
fechalta date default sysdate,
fechavencimiento date,
serie varchar2(10)
}

Leer Mas...