You are on page 1of 11

TIPO CARACTERISTICAS OBSERVACIONES

Entre 1 y 2000 bytes como máximo. Aunque se


Cadena de caracteres introduzca un valor más corto que el indicado
CHAR (alfanuméricos) de en el tamaño, se rellenará al tamaño indicado.
longitud fija Es de longitud fija, siempre ocupará lo mismo,
independientemente del valor que contenga
Entre 1 y 4000 bytes como máximo. El tamaño
Cadena de caracteres de
VARCHAR2 del campo dependerá del valor que contenga, es
longitud variable
de longitud variable.
Cadena de caracteres de
VARCHAR En desuso, se utiliza VARCHAR2 en su lugar
longitud variable
Entre 1 y 2000 bytes como máximo. El juego
Cadena de caracteres de
de caracteres del tipo de datos (datatype)
longitud fija que sólo
NCHAR NCHAR sólo puede ser AL16UTF16 ó UTF8.
almacena caracteres
El juego de caracteres se especifica cuando se
Unicode
crea la base de datos Oracle
Entre 1 y 4000 bytes como máximo. El juego
Cadena de caracteres de
de caracteres del tipo de datos (datatype)
longitud variable que
NVARCHAR2 NCHAR sólo puede ser AL16UTF16 ó UTF8.
sólo almacena
El juego de caracteres se especifica cuando se
caracteres Unicode
crea la base de datos Oracle
Como máximo admite hasta 2 GB (2000 MB).
Los datos LONG deberán 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 alguno LOB
Cadena de caracteres de
LONG si aún se está utilizando.
longitud variable
No se puede utilizar en claúsulas WHERE,
GROUP BY, ORDER BY, CONNECT BY ni
DISTINCT

Una tabla sólo puede contener una columna de


tipo LONG.

Sólo soporta acceso secuencial.


Almacenan cadenas Hasta 2 GB.
LONG RAW binarias de ancho
variable En desuso, se sustituye por los tipos LOB.
Almacenan cadenas Hasta 32767 bytes.
RAW binarias de ancho
variable En desuso, se sustituye por los tipos LOB.
LOB (BLOG, Permiten almacenar y Admiten hasta 8 terabytes (8000 GB).
manipular bloques
grandes de datos no Una tabla puede contener varias columnas de
CLOB, estructurados (tales tipo LOB.
NCLOB, como texto, imágenes,
BFILE) videos, sonidos, etc) en Soportan acceso aleatorio.
formato binario o del
carácter Las tablas con columnas de tipo LOB no
pueden ser replicadas.
Permite almacenar datos
BLOB binarios no Admiten hasta 8 terabytes
estructurados
Almacena datos de tipo
CLOB Admiten hasta 8 terabytes
carácter
Admiten hasta 8 terabytes.
Almacena datos de tipo
NCLOB
carácter Guarda los datos según el juego de caracteres
Unicode nacional.
Almacena datos binarios
no estructurados en Admiten hasta 8 terabytes.
archivos del sistema
operativo, fuera de la El administrador de la base de datos debe
base de datos. Una asegurarse de que exista el archivo en disco y
BFILE
columna BFILE de que los procesos de Oracle tengan permisos
almacena un localizador de lectura para el archivo .
del archivo a uno
externo que contiene los
datos
ROWID Almacenar la dirección ROWID físico almacena la dirección de fila en
única de cada fila de la las tablas, las tablas en clúster, los índices,
tabla de la base de datos excepto en las índices-organizados (IOT).

ROWID lógico almacena la dirección de fila en


tablas de índice-organizado (IOT).

Un ejemplo del valor de un campo ROWID


podría 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
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 a 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, dos filas
con números de bloque iguales podrían residir
en diferentes datafiles del mismo tablespace.

RRR: el número 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. Sólo 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 cuántos


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
UROWID ROWID universal Oracle, tablas externas. Admite tanto ROWID
lógicos como físicos.
NUMBER Almacena números fijos Se admiten hasta 38 dígitos de precisión y son
y en punto flotante 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 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.

Para no indicar la precisión y sí la escala


podemos utilizar:

nombre_columna NUMBER (*, escala)

Para introducir números que no estén el el


formato estándar de Oracle se puede utilizar la
función TO_NUMBER.
Almacena tipos de datos
Es un tipo NUMBER que sólo almacena
FLOAT numéricos en punto
números en punto flotante
flotante
DATE Almacena un punto en El tipo de datos DATE almacena el año
el tiempo (fecha y hora) (incluyendo el siglo), el mes, el día, las horas,
los minutos y los segundos (después 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, año, mes, día,
hora, minuto, y al segundo.

Para entrada/salida de fechas, Oracle utiliza por


defecto el formato DD-MMM-AA. Para cambiar
este formato de fecha por defecto se utiliza el
parámetro NLS_DATE_FORMAT.

Para insertar fechas que no estén en el mismo


formato de fecha estándar de Oracle, se puede
utilizar la función TO_DATE con una máscara
del formato: TO_DATE (el “13 de noviembre
de 1992”, “DD del MES, YYYY”)
Almacena datos de tipo
TIMESTAMP hora, fraccionando los
segundos
Almacena datos de tipo
TIMESTAMP hora incluyendo la zona
WITH TIME horaria (explícita),
ZONE fraccionando los
segundos
Almacena datos de tipo
TIMESTAMP hora incluyendo la zona Cuando se usa un SELECT para mostrar los
WITH LOCAL horaria local (relativa), datos de este tipo, el valor de la hora será
TIME ZONE franccionando los ajustado a la zona horaria de la sesión actual
segundos
Tipo de datos abstracto.
Se asocia a un esquema XML para la definición
XMLType En realidad se trata de
de su estructura.
un CLOB.

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

Un ejemplo de creación de tabla con alguno de estos tipos de datos de Oracle prodí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,
fechaalta date default sysdate,
fechavencimiento date,
serie varchar2(10)
)
Tipos de datos en PL/SQL
Cada constante y variable tien un tipo
de dato en el cual se especifica el formato
de almacenamiento, restricciones y rango
de valores validos.
PL/SQL proporciona una variedad
predefinida de tipos de datos . Casi todos
los tipos de datos manejados por PL/SQL
son similares a los soportados por SQL. A
continuación se muestran los TIPOS de
DATOS más comunes:
• NUMBER (Numérico): Almacena números enteros o de punto flotante,
virtualmente de cualquier longitud, aunque puede ser especificada la precisión
(Número de digitos) y la escala que es la que determina el número de decimales.

-- NUMBER [(precision, 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 dos decimales */

• CHAR (Caracter): Almacena datos de tipo caracter con una longitud maxima
de 32767 y cuyo valor de longitud por default es 1

-- CHAR [(longitud_maxima)]
nombre CHAR(20);
/* Indica que puede almacenar valores alfanuméricos de 20
posiciones */

• VARCHAR2 (Caracter de longitud variable): Almacena datos de tipo caracter


empleando sólo la cantidad necesaria aún cuando la longitud máxima sea mayor.
-- VARCHAR2 (longitud_maxima)
nombre VARCHAR2(20);
/* Indica que puede almacenar valores alfanuméricos de hasta
20
posicones */
/* Cuando la longitud de los datos sea menor de 20 no se
rellena con blancos */

• BOOLEAN (lógico): Se emplea para almacenar valores TRUE o FALSE.


hay_error BOOLEAN;

• DATE (Fecha): Almacena datos de tipo fecha. Las fechas se almacenan


internamente como datos numéricos, por lo que es posible realizar operaciones
aritmeticas con ellas.
• Atributos de tipo. Un atributo de tipo PL/SQL es un modificador que puede ser
usado para obtener información de un objeto de la base de datos. El atributo
%TYPE permite conocer el tipo de una variable, constante o campo de la base
de datos. El atributo %ROWTYPE permite obtener los tipos de todos los
campos de una tabla de la base de datos, de una vista o de un cursor.
• PL/SQL también permite la creación de tipos personalizados (registros) y
colecciones(tablas de PL/SQL), que veremos en sus apartados correspondientes.

Existen por supuesto más tipos de datos, la siguiente tabla los muestra:

Tipo de
dato / Oracle 8i Oracle 9i Descripción
Sintáxis
Donde p es la
precisión y e la
escala.

Por ejemplo:
La precisión máxima es de La precisión máxima es de dec(3,1) es un
dec(p, e)
38 dígitos. 38 dígitos. número que
tiene 2 dígitos
antes del
decimal y un
dígito después
del decimal.
decimal(p, La precisión máxima es de La precisión máxima es de Donde p es la
e) 38 dígitos. 38 dígitos. precisión y e la
escala.

Por ejemplo:
decimal(3,1) es
un número que
tiene 2 dígitos
antes del
decimal y un
dígito después
del decimal.
double
precision
float
int
integer
Donde p es la
precisión y e la
escala.

Por ejemplo:
numeric(p, La precisión máxima es de La precisión máxima es de numeric(7,2) es
e) 38 dígitos. 38 dígitos. un número que
tiene 5 dígitos
antes del
decimal y 2
dígitos después
del decimal.
Donde p es la
precisión y e la
escala.

Por ejemplo:
number(p, La precisión máxima es de La precisión máxima es de number(7,2) es
e) 38 dígitos. 38 dígitos. un número que
tiene 5 dígitos
antes del
decimal y 2
dígitos después
del decimal.
real
smallint
Donde tamaño
es el número de
Hasta 32767 bytes en Hasta 32767 bytes en
caracteres a
PLSQL. PLSQL.
char almacenar. Son
(tamaño) cadenas de
Hasta 2000 bytes en Hasta 2000 bytes en
ancho fijo. Se
Oracle 8i. Oracle 9i.
rellena con
espacios.
varchar2 Hasta 32767 bytes en Hasta 32767 bytes en Donde tamaño
(tamaño) PLSQL. PLSQL. es el número de
caracteres a
almacenar. Son
Hasta 4000 bytes en Hasta 4000 bytes en cadenas de
Oracle 8i. Oracle 9i. ancho variable.
Son cadenas de
long Hasta 2 gigabytes. Hasta 2 gigabytes.
ancho variable.
Hasta 32767 bytes en Hasta 32767 bytes en
PLSQL. PLSQL. Son cadenas
raw binarias de
Hasta 2000 bytes en Hasta 2000 bytes en ancho variable.
Oracle 8i. Oracle 9i.
Son cadenas
long raw Hasta 2 gigabytes. Hasta 2 gigabytes. binarias de
ancho variable.
Una fecha entre el 1 de Una fecha entre el 1 de
Enero de 4712 A.C. y el Enero de 4712 A.C. y el
date
31 de Diciembre de 9999 31 de Diciembre de 9999
D.C. D.C.
Incluye año,
mes día, hora,
timestamp fractional seconds
minutos y
(fractional No soportado por Oracle precision debe ser un
segundos.
seconds 8i. número entre 0 y 9. (El
precision) valor por defecto es 6)
Por ejemplo:
timestamp(6)
Incluye año,
mes día, hora,
minutos y
timestamp
segundos; con
(fractional fractional seconds
un valor de
seconds No soportado por Oracle precision debe ser un
desplazamiento
precision) 8i. número entre 0 y 9. (El
de zona horaria.
with time valor por defecto es 6)
zone
Por ejemplo:
timestamp(5)
with time zone
timestamp No soportado por Oracle fractional seconds Incluye año,
(fractional 8i. precision debe ser un mes día, hora,
seconds número entre 0 y 9. (El minutos y
precision) valor por defecto es 6) segundos; con
with local una zona
time zone horaria
expresada
como la zona
horaria actual.

Por ejemplo:
timestamp(4)
with local time
zone
Período de
tiempo
interval almacenado en
year precision debe ser
year (year No soportado por Oracle años y meses.
un número entre 0 y 9. (El
precision) 8i.
valor por defecto es 2)
to month Por ejemplo:
interval year(4)
to month
day precision debe ser un Incluye año,
interval
número entre 0 y 9. (El mes día, hora,
day (day
valor por defecto es 2) minutos y
precision)
No soportado por Oracle segundos.
to second
8i. fractional seconds
(fractional
precision debe ser un Por ejemplo:
seconds
número entre 0 y 9. (El interval day(2)
precision)
valor por defecto es 6) to second(6)
El formato del campo El formato del campo
rowid es: rowid es:
Datos binarios
de ancho fijo.
BBBBBBB.RRRR.FFFFF BBBBBBB.RRRR.FFFFF
Cada registro
donde BBBBBBB es el donde BBBBBBB es el
rowid de la base de
bloque en el fichero de la bloque en el fichero de la
datos tiene una
base de datos; RRRR es la base de datos; RRRR es la
dirección física
fila del bloque; FFFFF es fila del bloque; FFFFF es
o rowid.
el fichero de la base de el fichero de la base de
datos. datos.
Rowid
urowid universal.
Hasta 2000 bytes. Hasta 2000 bytes.
[tamaño] Donde tamaño
es opcional.
Válido en PLSQL, este Válido en PLSQL, este
boolean tipo de datos no existe en tipo de datos no existe en
Oracle 8i. Oracle 9i.
Donde tamaño
es el número de
Hasta 32767 bytes en Hasta 32767 bytes en
nchar caracteres a
PLSQL. Hasta 2000 bytes PLSQL. Hasta 2000 bytes
(tamaño) almacenar.
en Oracle 8i. en Oracle 9i.
Cadena NLS de
ancho fijo.
nvarchar2 Hasta 32767 bytes en Hasta 32767 bytes en Donde tamaño
(tamaño) PLSQL. Hasta 4000 bytes PLSQL. Hasta 4000 bytes es el número de
en Oracle 8i. en Oracle 9i. caracteres a
almacenar.
Cadena NLS de
ancho variable.
Localizadores
de archivo
apuntan a un
bfile Hasta 4 gigabytes. Hasta 4 gigabytes. objeto binario
de sólo lectura
fuera de la base
de datos.
Localizadores
LOB apuntan a
un gran objeto
blob Hasta 4 gigabytes. Hasta 4 gigabytes.
binario dentro
de la base de
datos.
Localizadores
LOB apuntan a
un gran objeto
clob Hasta 4 gigabytes. Hasta 4 gigabytes.
de caracteres
dentro de la
base de datos.
Localizadores
LOB apuntan a
un gran objeto
nclob Hasta 4 gigabytes. Hasta 4 gigabytes. NLS de
caracteres
dentro de la
base de datos.

You might also like