Os mostramos los tipos de datos del motor de base de datos SGBD Microsoft SQL Server y MSDE: bigint, int, smallint, tinyint, bit, decimal, money, smallmoney, float, real, datetime, smalldatetime, char, varchar, varbinary, etc. Explicamos cuando utilizarlos y el tamaño que ocupan. En el artículo se incluyen los tipos de datos disponibles hasta la versión 2005.

Definición de Microsoft SQL Server

Microsoft SQL Server es un sistema de gestión de bases de datos relacionales (SGBD) basado en el lenguaje Transact-SQL, y específicamente en Sybase IQ. Este motor de base de datos admite multitud de usuarios conectados a la base de datos de forma simultánea y concurrente.

Algunas de las características de Microsoft SQL Server:

  • Soporte de transacciones.
  • Escalabilidad, estabilidad y seguridad.
  • Soporta procedimientos almacenados.
  • Incluye también un potente entorno gráfico de administración, que permite el uso de comandos DDL y DML gráficamente.
  • Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en el servidor y las terminales o clientes de la red sólo acceden a la información.
  • Permite administrar información de otros servidores de datos.

Este sistema de gestión de bases incluye una versión reducida, llamada MSDE con el mismo motor de base de datos pero orientado a proyectos más pequeños, que en su versión 2005 pasa a ser el SQL Express Edition, que se distribuye en forma gratuita.

Tipos de datos de Microsoft SQL Server

A continuación os mostramos los tipos de datos que se pueden definir para este motor de base de datos (tanto para Microsoft SQL Server como para MSDE).

Números exactos

Tipo de datoIntervaloAlmacenamiento
bigintDe -263 (-9.223.372.036.854.775.808) a 263 – 1 (9.223.372.036.854.775.807)8 bytes
intDe -231 (-2.147.483.648) a 231 – 1 (2.147.483.647)4 bytes
smallintDe -215 (-32.768) a 215 – 1 (32.767)2 bytes
tinyintTipo de datos entero que puede aceptar los valores 1, 0 ó NULL2 bytes
decimal, numeric, decimal (p, s)p (precisión): el número total máximo de dígitos decimales que se puede almacenar, tanto a la izquierda como a la derecha del separador decimal. La precisión debe ser un valor comprendido entre 1 y la precisión máxima de 38. La precisión predeterminada es 18.
s (escala): el número máximo de dígitos decimales que se puede almacenar a la derecha del separador decimal. La escala debe ser un valor comprendido entre 0 y p. Sólo es posible especificar la escala si se ha especificado la precisión. La escala predeterminada es 0.
Con precisión máxima 1038 +1 y 1038 – 1
Precisión 1 – 9: 5 bytes
moneyTipos de datos que representan valores monetarios o de moneda: de -922.337.203.685,4775808 a 922.337.203.685,47758078 bytes
smallmoneyDe – 214,7483648 a 214,74836478 bytes

Numéricos aproximados

Tipo de datoIntervaloAlmacenamiento
floatDe – 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a 1,79E+308Depende del valor de n
realDe – 3,40E + 38 a -1,18E – 38, 0 y de 1,18E – 38 a 3,40E + 384 Bytes

Fecha y hora

Tipo de datoIntervaloAlmacenamiento
datetimeDel 1 de enero de 1753 hasta el 31 de diciembre de 9999
smalldatetimeDel 1 de enero de 1900 hasta el 6 de junio de 2079

Cadenas de caracteres

Tipo de datoIntervaloAlmacenamiento
char (n)Caracteres no Unicode de longitud fija, con una longitud de n bytes. n debe ser un valor entre 1 y 8.000n bytes
varchar (n)Caracteres no Unicode de longitud variable. n indica que el tamaño de almacenamiento máximo es de 231 – 1 bytesn bytes (aprox.)
textEn desuso, sustituido por varchar.
Datos no Unicode de longitud variable con una longitud máxima de 231 – 1 (2.147.483.647) caracteres
max bytes (aprox.)

Cadenas de caracteres unicode

Tipo de datoIntervaloAlmacenamiento
nchar (n)Datos de carácter Unicode de longitud fija, con n caracteres. n debe estar comprendido entre 1 y 4.0002 * n bytes
nvarchar (n)Datos de carácter Unicode de longitud variable. n indica que el tamaño máximo de almacenamiento es 231 – 1 bytes2 * n bytes + 2 bytes
ntext (n)En desuso, sustituido por nvarchar.
Datos Unicode de longitud variable con una longitud máxima de 230 – 1 (1.073.741.823) caracteres
2 * n bytes

Cadenas binarias

Tipo de datoIntervaloAlmacenamiento
binary (n)Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor que oscila entre 1 y 8.000v
varbinary (n)Datos binarios de longitud variable. n indica que el tamaño de almacenamiento máximo es de 231 – 1 bytesn bytes
imageEn desuso, sustituido por varbinary.
Datos binarios de longitud variable desde 0 hasta 231 – 1 (2.147.483.647) bytes

Otros tipos de datos

Tipo de datoIntervaloAlmacenamiento
cursorTipo de datos para las variables o para los parámetros de resultado de los procedimientos almacenados que contiene una referencia a un cursor. Las variables creadas con el tipo de datos cursor aceptan NULL
timestampTipo de datos que expone números binarios únicos generados automáticamente en una base de datos. El tipo de datos timestamp es simplemente un número que se incrementa y no conserva una fecha o una hora8 bytes
sql_variantTipo de datos que almacena valores de varios tipos de datos aceptados en SQL Server, excepto text, ntext, image, timestamp y sql_variant
uniqueidentifierEs un GUID (Globally Unique Identifier, Identificador Único Global)16 bytes
tableEs un tipo de datos especial que se puede utilizar para almacenar un conjunto de resultados para su procesamiento posterior. table se utiliza principalmente para el almacenamiento temporal de un conjunto de filas devuelto como el conjunto de resultados de una función con valores de tabla
xmlAlmacena datos de XML. Puede almacenar instancias de xml en una columna o una variable de tipo xml