Tipos de datos en SQL Server

Tipos de datos en SQL Server

Numéricos exactos

TipoRango de valoresAlmacenamiento
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
tinyintDe 0 a 2551 byte
bitTipo de datos entero que puede aceptar los valores 1, 0 ó NULL2 bytes
decimal, numeric, decimal (p, s)p (precisión): el número 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. (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 – 1Precisión 1 – 9: 5 bytes Precisión 10 – 19: 9 bytes Precisión 20 – 28: 13 bytes Precisión 29 – 38: 17 bytes
moneyDesde -922.337.203.685,4775808 a 922.337.203.685,47758078 bytes
smallmoneyDe – 214,7483648 a 214,74836474 bytes

Numéricos no exactos

TipoRango de valoresAlmacenamiento
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

TipoRango de valoresAlmacenamiento
dateDe 01/01/01 al 21/12/9999 Almacena fechas. 3 bytes
datetimeDe 01/01/01 al 21/12/9999 Almacena fechas y horas. 8 bytes
Datetime2De 01/01/01 al 21/12/9999 Almacena fechas y horas con mayor precisión. 6 bytes precisión <= 3.
7 bytes precisión 3 o 4.
Otras  8 bytes.
smalldatetimeDe 1 de enero de 1900 hasta el 6 de junio de 2079 4 bytes
TimeDe 00:00:00.0000000 hasta 23:59:59.9999999 5 bytes

Cadena de caracteres

TipoRango de valoresAlmacenamiento
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) caracteresmax bytes (aprox.)
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) caracteres2 * n bytes
binary (n)Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor que oscila entre 1 y 8.000n bytes
varbinary (n)Datos binarios de longitud variable. n indica que el tamaño de almacenamiento máximo es de 231 – 1 bytesn bytes
imageDatos binarios de longitud variable desde 0 hasta 231 – 1 (2.147.483.647) bytes 

Otros

TipoRango de valoresAlmacenamiento
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