Vous êtes sur la page 1sur 4

TIPOS DE DATOS EN ORACLE 11G

Os mostramos los tipos de datos / datatypes disponibles en Oracle para seleccionar el tipo de registro de una tabla
Oracle. Tamibn indicamos sus caractersticas (tamao mximo, peculiaridades, etc). Es importante conocer los
tipos de datos disponibles en un Sistema Gestor de Base de Datos (SGBD), de esta forma podremos obtimizar al
mximo el uso de recursos de nuestras aplicaciones. A continuacin os indicamos todos los tipos de datos de Oracle
y sus caractersticas bsicas:

TIPO CARACTERISTICAS OBSERVACIONES


Entre 1 y 2000 bytes como mximo. Aunque se introduzca
un valor ms corto que el indicado en el tamao, se
Cadena de caracteres
CHAR rellenar al tamao indicado. Es de longitud fija, siempre
(alfanumricos) de longitud fija
ocupar lo mismo, independientemente del valor que
contenga
Cadena de caracteres de longitud Entre 1 y 4000 bytes como mximo. El tamao del campo
VARCHAR2
variable depender del valor que contenga, es de longitud variable.
Cadena de caracteres de longitud
VARCHAR En desuso, se utiliza VARCHAR2 en su lugar
variable
Entre 1 y 2000 bytes como mximo. El juego de
Cadena de caracteres de longitud
caracteres del tipo de datos (datatype) NCHAR slo puede
NCHAR fija que slo almacena caracteres
ser AL16UTF16 UTF8. El juego de caracteres se
Unicode
especifica cuando se crea la base de datos Oracle
Entre 1 y 4000 bytes como mximo. El juego de
Cadena de caracteres de longitud
caracteres del tipo de datos (datatype) NCHAR slo puede
NVARCHAR2 variable que slo almacena
ser AL16UTF16 UTF8. El juego de caracteres se
caracteres Unicode
especifica cuando se crea la base de datos Oracle
Como mximo admite hasta 2 GB (2000 MB). Los datos
LONG debern ser convertidos apropiadamente al moverse
entre diversos sistemas.

Este tipo de datos est obsoleto (en desuso), en su lugar


se utilizan los datos de tipo LOB (CLOB,NCLOB). Oracle
recomienda que se convierta el tipo de datos LONG a
Cadena de caracteres de longitud alguno LOB si an se est utilizando.
LONG
variable
No se puede utilizar en clasulas WHERE, GROUP BY,
ORDER BY, CONNECT BY ni DISTINCT

Una tabla slo puede contener una columna de tipo LONG.

Slo soporta acceso secuencial.


Hasta 2 GB.
Almacenan cadenas binarias de
LONG RAW
ancho variable
En desuso, se sustituye por los tipos LOB.
Hasta 32767 bytes.
Almacenan cadenas binarias de
RAW
ancho variable
En desuso, se sustituye por los tipos LOB.
Admiten hasta 8 terabytes (8000 GB).

Permiten almacenar y manipular Una tabla puede contener varias columnas de tipo LOB.
LOB (BLOG,
bloques grandes de datos no
CLOB,
estructurados (tales como texto,
NCLOB, Soportan acceso aleatorio.
imgenes, videos, sonidos, etc)
BFILE)
en formato binario o del carcter
Las tablas con columnas de tipo LOB no pueden ser
replicadas.
Permite almacenar datos binarios
BLOB Admiten hasta 8 terabytes
no estructurados
CLOB Almacena datos de tipo carcter Admiten hasta 8 terabytes
Admiten hasta 8 terabytes.

NCLOB Almacena datos de tipo carcter


Guarda los datos segn el juego de caracteres Unicode
nacional.
Admiten hasta 8 terabytes.
Almacena datos binarios no
estructurados en archivos del
sistema operativo, fuera de la El administrador de la base de datos debe asegurarse de
BFILE base de datos. Una columna que exista el archivo en disco y de que los procesos de
BFILE almacena un localizador Oracle tengan permisos de lectura para el archivo .
del archivo a uno externo que
contiene los datos

ROWID fsico almacena la direccin de fila en las tablas,


las tablas en clster, los ndices, excepto en las ndices-
organizados (IOT).

ROWID lgico almacena la direccin de fila en tablas de


ndice-organizado (IOT).

Un ejemplo del valor de un campo ROWID podra ser:


"AAAIugAAJAAC4AhAAI". El formato es el siguiente:

Para "OOOOOOFFFBBBBBBRRR", donde:

OOOOOO: segmento de la base de datos (AAAIug en el


ejemplo). Todos los objetos que estn en el mismo
esquema y en el mismo segmento tendrn el mismo valor.

FFF: el nmero de fichero del tablespace relativo que


contiene la fila (fichero AAJ en el ejemplo).

BBBBBB: el bloque de datos que contiene a la fila (bloque


AAC4Ah en el ejemplo). El nmero de bloque es relativo a
su fichero de datos, no al tablespace. Por lo tanto, dos filas
Almacenar la direccin nica de con nmeros de bloque iguales podran residir en
ROWID cada fila de la tabla de la base de diferentes datafiles del mismo tablespace.
datos
RRR: el nmero de fila en el bloque (fila AAI en el
ejemplo).

Este tipo de campo no aparece en los SELECT ni se puede


modificar en los UPDATE, ni en los INSERT. Tampoco se
puede utilizar en los CREATE. Es un tipo de datos utilizado
exclusivamente por Oracle. Slo se puede ver su valor
utilizando la palabra reservada ROWID, por ejemplo:

select rowid, nombre, apellidos from clientes

Ejemplo 2:

SELECT ROWID, SUBSTR(ROWID,15,4) "Fichero",


SUBSTR(ROWID,1,8) "Bloque",
SUBSTR(ROWID,10,4) "Fila" FROM proveedores

Ejemplo 3: una forma de saber en cuntos ficheros de


datos est alojada una tabla:

SELECT COUNT(DISTINCT(SUBSTR(ROWID,7,3)))
"Numero ficheros " FROM facturacion
Admite ROWID a tablas que no sean de Oracle, tablas
UROWID ROWID universal
externas. Admite tanto ROWID lgicos como fsicos.
Se admiten hasta 38 dgitos de precisin y son portables a
cualquier entre los diversos sistemas en que funcione
Oracle.

Para declarar un tipo de datos NUMBER en un CREATE


UPDATE es suficiente con:

nombre_columna NUMBER

opcionalmente se le puede indicar la precisin (nmero


total de dgitos) y la escala (nmero de dgitos a la
derecha de la coma, decimales, los coger de la precisin
indicada):
Almacena nmeros fijos y en
NUMBER
punto flotante
nombre_columna NUMBER (precision, escala)

Si no se indica la precisin se tomar en funcin del


nmero a guardar, si no se indica la escala se tomar
escala cero.

Para no indicar la precisin y s la escala podemos utilizar:

nombre_columna NUMBER (*, escala)

Para introducir nmeros que no estn el el formato


estndar de Oracle se puede utilizar la funcin
TO_NUMBER.
Almacena tipos de datos Es un tipo NUMBER que slo almacena nmeros en punto
FLOAT
numricos en punto flotante flotante
El tipo de datos DATE almacena el ao (incluyendo el
siglo), el mes, el da, las horas, los minutos y los segundos
(despus de medianoche).

Oracle utiliza su propio formato interno para almacenar


fechas.

Los tipos de datos DATE se almacenan en campos de


longitud fija de siete octetos cada uno, correspondiendo al
siglo, ao, mes, da, hora, minuto, y al segundo.

Para entrada/salida de fechas, Oracle utiliza por defecto el


Almacena un punto en el tiempo formato DD-MMM-AA. Para cambiar este formato de
DATE fecha por defecto se utiliza el
(fecha y hora)
parmetro NLS_DATE_FORMAT.

Para insertar fechas que no estn en el mismo formato de


fecha estndar de Oracle, se puede utilizar la
funcin TO_DATE con una mscara del formato: TO_DATE
(el 13 de noviembre de 1992, DD del MES, YYYY)

Almacena datos de tipo hora,


TIMESTAMP
fraccionando los segundos
TIMESTAMP Almacena datos de tipo hora
WITH TIME incluyendo la zona horaria
ZONE (explcita), fraccionando los
segundos
Almacena datos de tipo hora
TIMESTAMP Cuando se usa un SELECT para mostrar los datos de este
incluyendo la zona horaria local
WITH LOCAL tipo, el valor de la hora ser ajustado a la zona horaria de
(relativa), franccionando los
TIME ZONE la sesin actual
segundos
Tipo de datos abstracto. En Se asocia a un esquema XML para la definicin de su
XMLType
realidad se trata de un CLOB. estructura.

De los tipos anteriores, los comunmente utilizados son: VARCHAR2 (cadenas de texto no muy grandes), DATE
(fechas, horas), NUMBER (nmeros), BLOB (ficheros de tipo word, excel, access, video, sonido, imgenes, etc) y
CLOB (cadenas de texto muy grandes).

Un ejemplo de creacin de tabla con alguno de estos tipos de datos de Oracle proda 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,
fechaalta date default sysdate,
fechavencimiento date,
serie varchar2(10)
)