Tipos de Datos en Oracle Database – Parte 1

7 minuto(s)

Es importante mencionar que Oracle es una de las bases de datos empresariales más populares del mundo, con esto no quiero decir que no puedas optar por usar otra base de datos para tu proyecto, ya que en la actualidad existen buenas alternativas que brindan una gran performance, sobre todo las bases de datos NoSQL, pero de que Oracle es una buena alternativa de base de datos, si que lo es. Para poder trabajar con la base de datos Oracle, es importante conocer los tipos de datos con los que cuenta, en este Post te compartiré los Tipos de Datos en Oracle, vamos con ello.

Partes

Antes de continuar, te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casa“La Inteligencia Artificial (IA) y el Machine Learning (ML) Siempre Trabajan de la Mano” (Anchor Podcast)

Spotify: Sound Cloud: Apple Podcasts Anchor Podcasts

Bien ahora continuemos con el Post: Tipos de Datos en Oracle Database – Parte 1. 

Tipos de Datos en Oracle

Cada valor manipulado por Oracle Database tiene un tipo de datos . El tipo de datos de un valor asocia un conjunto fijo de propiedades con el valor. Estas propiedades hacen que Oracle trate los valores de un tipo de datos de manera diferente a los valores de otro. Por ejemplo, pueded agregar valores de tipo de datos NUMBER, pero no valores de tipo de datos RAW.

Cuando creas una tabla o un clúster, debes especificar un tipo de datos para cada una de sus columnas. Cuando creas un procedimiento o una función almacenada, debes especificar un tipo de datos para cada uno de sus argumentos. Estos tipos de datos definen el dominio de valores que cada columna puede contener o cada argumento puede tener. Por ejemplo, las columnas DATE no pueden aceptar el valor 29 de febrero (excepto año bisiesto) o los valores 2 o ‘SHOE’. Cada valor colocado posteriormente en una columna asume el tipo de datos de la columna. Por ejemplo, si insertas ’01-ENE-98’en una columna DATE, Oracle trata la cadena de caracteres ’01-JAN-98′ como un valor DATE después de verificar que se traduce en una fecha válida.

Oracle Database proporciona una serie de tipos de datos integrados, así como varias categorías para tipos definidos por el usuario que se pueden utilizar como tipos de datos. La sintaxis de los tipos de datos en Oracle aparece en los diagramas siguientes. Oracle divide los tipos de datos en las siguientes secciones:

  • Tipos de datos integrados de Oracle
  • Tipos de datos ANSI, DB2 y SQL/DS
  • Tipos definidos por el usuario
  • Tipos suministrados por Oracle

Veamos a continuación cada uno de estos tipos de datos.

Tipos de Datos Integrados de Oracle

Oracle Database utiliza internamente los siguientes códigos enumerados para los tipos de datos. La función devuelve el código de tipo de datos de una columna o un atributo de objeto DUMP. Veamos a continuación la siguiente tabla con los tipos de datos integrados de Oracle:

Código Tipo de datos Descripción
1 VARCHAR2( size[ BYTE| CHAR]) Cadena de caracteres de longitud variable que tiene una longitud máxima sizede bytes o caracteres. Debes especificar sizepara VARCHAR2. El mínimo sizees 1 byte o 1 carácter. El tamaño máximo es:
  • 32767 bytes o caracteres siMAX_STRING_SIZE = EXTENDED
  • 4000 bytes o caracteres siMAX_STRING_SIZE = STANDARD

Consulta “Tipos de datos extendidos” para obtener más información sobre el parámetro de inicialización MAX_STRING_SIZE.

BYTEindica que la columna tendrá una semántica de longitud de bytes. CHAR indica que la columna tendrá semántica de caracteres.

1 NVARCHAR2( size) Cadena de caracteres Unicode de longitud variable que tiene una longitud máxima sizede caracteres. Debes especificar sizepara NVARCHAR2. El número de bytes puede ser hasta dos veces sizepara la codificación AL16UTF16 y tres veces sizepara la codificación UTF8. El máximo sizeestá determinado por la definición del juego de caracteres local, con un límite superior de:
  • 32767 bytes siMAX_STRING_SIZE = EXTENDED
  • 4000 bytes siMAX_STRING_SIZE = STANDARD

Consulta “Tipos de datos extendidos” para obtener más información sobre el parámetro de inicialización MAX_STRING_SIZE.

2 NUMBER[ ( p[, s]) ] Número que tiene precisión py escala s. La precisión ppuede variar de 1 a 38. La escala spuede variar de -84 a 127. Tanto la precisión como la escala están en dígitos decimales. Un valor NUMBER requiere de 1 a 22 bytes.
2 FLOAT[( p)] Un subtipo del tipo de datos NUMBER que tiene precision p. Un valor FLOATse representa internamente como NUMBER. La precisión ppuede variar de 1 a 126 dígitos binarios. Un valor FLOAT requiere de 1 a 22 bytes.
8 LONG Datos de caracteres de longitud variable hasta 2 gigabytes, o 2 31 -1 bytes. Proporcionado para la compatibilidad con versiones anteriores.
12 DATE Rango de fechas válidas desde el 1 de enero de 4712 a. C. hasta el 31 de diciembre de 9999 d. C. El formato predeterminado está determinado explícitamente por el parámetro NLS_DATE_FORMAT o implícitamente por el parámetro NLS_TERRITORY. El tamaño se fija en 7 bytes. Este tipo de datos contiene los campos de fecha y hora YEAR, MONTH, DAY, HOUR, MINUTEy SECOND. No tiene fracciones de segundo ni zona horaria.
100 BINARY_FLOAT Número de coma flotante de 32 bits. Este tipo de datos requiere 4 bytes.
101 BINARY_DOUBLE Número de coma flotante de 64 bits. Este tipo de datos requiere 8 bytes.
180 TIMESTAMP[( fractional_seconds_precision)] Valores de año, mes y día de fecha, así como valores de hora, minuto y segundo de tiempo, donde fractional_seconds_precisiones el número de dígitos en la parte fraccionaria del campo de fecha y hora SECOND. Los valores aceptados de fractional_seconds_precisionson 0 a 9. El valor predeterminado es 6. El formato predeterminado está determinado explícitamente por el parámetro NLS_TIMESTAMP_FORMAT o implícitamente por el parámetro NLS_TERRITORY. El tamaño es de 7 u 11 bytes, dependiendo de la precisión. Este tipo de datos contiene los campos de fecha y hora YEAR, MONTH, DAY, HOUR, MINUTEy SECOND. Contiene fracciones de segundo pero no tiene zona horaria.
181 TIMESTAMP[( fractional_seconds_precision)]WITH TIME ZONE Todos los valores de TIMESTAMPasí como el valor de desplazamiento de la zona horaria, donde fractional_seconds_precisiones el número de dígitos en la parte fraccionaria del campo de fecha y hora SECOND. Los valores aceptados son de 0 a 9. El valor predeterminado es 6. El formato predeterminado está determinado explícitamente por el parámetro NLS_TIMESTAMP_FORMAT o implícitamente por el parámetro NLS_TERRITORY. El tamaño se fija en 13 bytes. Este tipo de datos contiene los campos de fecha y hora YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOURy TIMEZONE_MINUTE. Tiene segundos fraccionarios y una zona horaria explícita.
231 TIMESTAMP[( fractional_seconds_precision)]WITH LOCAL TIME ZONE Todos los valores de TIMESTAMP WITH TIME ZONE, con las siguientes excepciones:
  • Los datos se normalizan a la zona horaria de la base de datos cuando se almacenan en la base de datos.
  • Cuando se recuperan los datos, los usuarios ven los datos en la zona horaria de la sesión.

El formato predeterminado está determinado explícitamente por el parámetro NLS_TIMESTAMP_FORMAT o implícitamente por el parámetro NLS_TERRITORY. El tamaño es de 7 u 11 bytes, dependiendo de la precisión.

182 INTERVAL YEAR[( year_precision)]TO MONTH Almacena un período de tiempo en años y meses, donde year_precisiones el número de dígitos en el campo de fecha y hora YEAR. Los valores aceptados son de 0 a 9. El valor predeterminado es 2. El tamaño se fija en 5 bytes.
183 INTERVAL DAY[( day_precision)] TO SECOND[( fractional_seconds_precision)] Almacena un período de tiempo en días, horas, minutos y segundos, donde:
  • day_precisiones el número máximo de dígitos en el campo de fecha y hora DAY. Los valores aceptados son de 0 a 9. El valor predeterminado es 2.
  • fractional_seconds_precisiones el número de dígitos en la parte fraccionaria del campo SECOND. Los valores aceptados son de 0 a 9. El valor predeterminado es 6.

El tamaño se fija en 11 bytes.

23 RAW( size) Datos binarios sin procesar de bytes de longitud size. Debes especificar sizecomo valor en RAW. El valor máximo para sizees:
  • 32767 bytes siMAX_STRING_SIZE = EXTENDED
  • 2000 bytes siMAX_STRING_SIZE = STANDARD

Consulta “Tipos de datos extendidos” para obtener más información sobre el parámetro de inicialización MAX_STRING_SIZE.

24 LONG RAW Datos binarios sin procesar de longitud variable hasta 2 gigabytes.
69 ROWID Cadena de base 64 que representa la dirección única de una fila en su tabla. Este tipo de datos es principalmente para valores devueltos por la pseudocolumna ROWID.
208 UROWID[( size)] Cadena de base 64 que representa la dirección lógica de una fila de una tabla organizada por índice. El opcional sizees el tamaño de una columna de tipo UROWID. El tamaño máximo y predeterminado es de 4000 bytes.
96 CHAR[( size[ BYTE| CHAR])] Datos de caracteres de longitud fija de bytes o caracteres de longitud size. El máximo valor para sizees de 2000 bytes o caracteres. El valor predeterminado y mínimo de sizees 1 byte.

BYTEy CHARtienen la misma semántica que para VARCHAR2.

96 NCHAR[( size)] Datos de caracteres de longitud fija de caracteres de longitud size. El número de bytes puede ser hasta dos veces sizepara la codificación AL16UTF16 y tres veces sizepara la codificación UTF8la codificación. El máximo valor máximo para sizeestá determinado por la definición del juego de caracteres local, con un límite superior de 2000 bytes. El valor predeterminado y mínimo para sizees 1 carácter.
112 CLOB Un objeto grande de caracteres que contiene caracteres de un solo byte o de varios bytes. Se admiten conjuntos de caracteres de ancho fijo y ancho variable, ambos utilizando el conjunto de caracteres de la base de datos. El tamaño máximo es (4 gigabytes – 1) * (tamaño de bloque de base de datos).
112 NCLOB Un objeto grande de carácter que contiene caracteres Unicode. Se admiten conjuntos de caracteres de ancho fijo y ancho variable, ambos utilizando el conjunto de caracteres local de la base de datos. El tamaño máximo es (4 gigabytes – 1) * (tamaño de bloque de base de datos). Almacena datos de conjuntos de caracteres locales.
113 BLOB Un objeto grande binario. El tamaño máximo es (4 gigabytes – 1) * (tamaño de bloque de base de datos).
114 BFILE Contiene un localizador de un gran archivo binario almacenado fuera de la base de datos. Habilita el acceso de E/S de flujo de bytes a LOB externos que residen en el servidor de la base de datos. El tamaño máximo es de 4 gigabytes.

Bien, aquí llegamos con esta primera parte sobre los tipos de datos que existen en Oracle. No hemos visto como se verian estos datos dentro de una tabla, ello lo veremos cuando desarrollemos proyectos con esta genial base de datos, primero es importante conocer los detalles teóricos sobre ellos.

Ten Paciencia, lo que quiero es que conozcas bien los tipos de datos en Oracle Database y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje. 

Nota (s)

  • En la siguiente parte veremos otros tipos de datos en Oracle Database
  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo. 

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.