Saltar la navegación

2.6. Tipos de datos

Existen tres grandes tipos de datos en SQL:

  1. Numéricos. Representan cantidades numéricas, susceptibles de participar en cálculos aritméticos.
  2. Alfanuméricos. Representan combinaciones de caracteres cualesquiera.
  3. De tiempo. Representan magnitudes temporales (años, meses, días, etc.).

Dentro de cada tipo de datos hay varios subtipos. Vamos a describir ahora los dominios correspondientes a cada uno de ellos y cómo se definen.

Numéricos

Existen tres subtipos de datos numéricos: enteros, decimales y en coma flotante.

Enteros

Sus valores son números enteros, positivos o negativos. Existen dos tipos de enteros: los pequeños y los grandes.

  • Pequeños o SMALLINT: su dominio son los números enteros comprendidos entre –32768 y 32767.
  • Grandes o INTEGER: su dominio son los números enteros entre –2147483648 y 2147483647.

Decimales

Sus valores son números positivos o negativos que pueden tener parte entera y parte fraccionaria. Estos tipos de datos se definen como:

DECIMAL(p,s)

  • p se llama precisión y es el número total de dígitos (parte entera y parte fraccionaria) que puede tener un valor.
  • s el número de dígitos que puede tener la parte fraccionaria y se conoce con el nombre de escala.

El dominio de un DECIMAL(p,s) es el conjunto de todos los números racionales, positivos y negativos, formados por p dígitos de los que s son fraccionarios.

En coma flotante

Sus valores representan números positivos o negativos que pueden tener parte entera y parte fraccionaria, como los datos de tipo decimal, pero con más cifras. Este tipo de datos se definen con la palabra FLOAT o la palabra REAL (ambas son equivalentes).

Su dominio es el conjunto de números racionales que son aproximaciones a los números reales comprendidos entre ciertos límites (generalmente los límites son los números cuyo valor absoluto esta comprendido entre 1.175494351e-38 y 3.402823466e38).

Internamente están codificados en lo que en términos informáticos se denomina coma flotante, lo que conlleva que puedan aparecer decimales inesperados en algunas operaciones. Así, puede ocurrir que en la suma de dos valores que debieran dar un número entero aparezcan decimales (por ejemplo 99.99999 en vez de 100). Esto hace a este tipo de datos menos adecuado, en general, que el tipo DECIMAL para aplicaciones comerciales, contables o financieras. En cambio, son más adecuados para aplicaciones científicas o de ingeniería en que se necesite manejar números muy grandes.

Alfanuméricos

Se utilizan para almacenar descripciones, nombres de personas, direcciones, etc. En general información de tipo textual o descriptiva. Sus valores son secuencias de caracteres cualesquiera, tomados del conjunto de caracteres disponible.

Al número de caracteres que forman un valor alfanumérico se le denomina longitud.

Los datos de tipo alfanumérico pueden ser de dos subtipos:

  • de longitud fija (CHAR)
  • de longitud variable (VARCHAR)

Longitud fija

Este tipo de datos se define como CHAR(n), donde n indica la longitud comprendida entre 1 y 254, ambos inclusive.

Su dominio es el de todas las secuencias de caracteres de longitud n.

Longitud variable

Se definen como VARCHAR(n) donde n indica la longitud que será como máxima 32767 caracteres.

Su dominio es el de todas las secuencias de caracteres de longitud comprendida entre 0 y n. Una secuencia de longitud cero se llama el valor vacío.

Tiempo

Sus valores son números que representan un punto en el tiempo con una precisión de días, segundos o microsegundos. Existen tres subtipos:

  • Fechas
  • Horas
  • Instante

Fechas

Se definen con la palabra DATE y representan un día determinado. Sus valores constan de tres partes, todas ellas números enteros sin signo.

0000 - 00 - 00

  • La primera parte tiene cuatro dígitos y representa un número de año.
  • La segunda tiene dos dígitos y representa el mes
  • La tercera, también de dos dígitos, representa el día.

Su dominio es el conjunto de todas las fechas validas según el calendario gregoriano, empezando en el día 1 de Enero del año 1 y terminando el 31 de Diciembre del año 9999, ambos inclusive.

Horas

Se definen con la palabra TIME y representan una hora determinada con precisión de segundos. Sus valores constan de tres partes, todas ellas números enteros de dos dígitos sin signo.

00 : 00 : 00

  • la primera parte representa la hora,
  • la segunda representa el minuto
  • la tercera los segundos

Si la hora tiene el valor 24, la segunda y tercera partes deben valer cero.

Su dominio es de todos los valores de horas, minutos y segundos válidos en un reloj de 24 horas.

Instante

Se definen con la palabra TIMESTAMP y representan un punto en el tiempo con precisión de microsegundos. Para ello sus valores constan de siete partes, todas ellas números enteros sin signo que representan año, mes, día, hora, minuto, segundo y microsegundo.

0000 - 00 - 00     00 : 00 : 00 . 000000

Sus valores son iguales a los de DATE y TIME y los microsegundos tienen una precisión de 6 dígitos.

Su dominio es el conjunto de valores que identifican todos los microsegundos comprendidos entre el 1 de Enero del año 1 y el 31 de Diciembre del año 9999, ambos inclusive.