Tipos de Datos en SQL Server
Elegir correctamente el tipo de dato en SQL Server es clave para garantizar la integridad, el buen
rendimiento y la eficiencia de una base de datos. No se trata sólo de definir qué tipo de información puede
guardar una columna, sino también de cómo impacta en el uso del almacenamiento y en la velocidad con
la que se realizan las operaciones.
1. Tipos de Datos Numéricos Exactos
Esta categoría se usa para guardar valores numéricos, ya sean enteros o decimales, con una precisión
definida y controlada.
Tipo de Dato Función/Descripción Uso Común
BIGINT Entero de 8 bytes. Rango Contadores o identificadores
±9×1018. únicos para tablas con
potencial de crecimiento
masivo.
INT Entero de 4 bytes. Rango ±2.1 Claves primarias, cantidades,
mil millones. valores de conteo que no
excedan el límite.
SMALLINT Entero de 2 bytes. Rango Edades, números de capítulos
±32,767. o cualquier valor entero
pequeño.
TINYINT Entero de 1 byte. Rango 0 a Códigos de estado, niveles (ej.
255. 0 a 5), indicadores que solo
necesitan valores positivos
pequeños.
BIT Entero de 1 bit. Almacena 0, 1, Indicadores booleanos
o NULL. (Verdadero/Falso).
DECIMAL(p, s) Almacena números decimales Valores monetarios,
con precisión (p) y escala (s) porcentajes, cálculos de
fijas. Precisión exacta ingeniería o científicos que
garantizada. requieren exactitud.
NUMERIC(p, s) Sinónimo funcional de Igual que DECIMAL.
DECIMAL.
MONEY Valores monetarios con cuatro Cálculos de divisas sencillos.
decimales fijos. Rango
±9×1014.
SMALLMONEY Valores monetarios con cuatro Cálculos de divisas pequeños.
decimales fijos. Rango
±214,748.
2. Tipos de Datos Numéricos Aproximados
Se emplean para guardar números en formato de punto flotante. Su principal característica es que
manejan valores de forma aproximada, lo que puede generar ligeros errores de redondeo. Por esta razón,
no son la mejor opción cuando se trata de datos financieros donde se requiere máxima precisión.
Tipo de Dato Función/Descripción Uso Común
FLOAT(n) Número de punto flotante de Cálculos científicos o
precisión variable (4 u 8 estadísticos donde las
bytes). Precisión aproximaciones de redondeo
aproximada. son aceptables.
REAL Número de punto flotante de Se utiliza cuando se necesita
precisión sencilla (4 bytes). menos precisión que con
FLOAT.
3. Tipos de Datos de Fecha y Hora
Esta categoría abarca tipos de datos diseñados para manejar información temporal, desde fechas simples
hasta combinaciones más complejas que incluyen hora, segundos, fracciones de segundo e incluso la zona
horaria.
Tipo de Dato Función/Descripción Uso Común
DATE Almacena solo la fecha (año, Fechas de nacimiento, fechas
mes, día). de contratación, fechas de
eventos.
TIME(n) Almacena solo la hora del día Horarios de apertura/cierre,
(precisión de 0 a 7 dígitos). duración de eventos.
DATETIME2(n) Almacena fecha y hora con Marcado de tiempo de
mayor precisión y rango más transacciones, registros de
amplio que DATETIME. actividad.
Recomendado para nuevos
desarrollos.
DATETIMEOFFSET(n) Almacena fecha, hora y la Aplicaciones distribuidas
información de la zona globalmente que necesitan
horaria (desplazamiento, saber la hora exacta en un
offset). punto geográfico.
DATETIME Almacena fecha y hora Compatibilidad con sistemas
(precisión de ∼3.33 antiguos. DATETIME2 es
milisegundos). (Tipo generalmente preferido.
heredado).
SMALLDATETIME Almacena fecha y hora Registros de tiempo donde la
(precisión de 1 minuto). (Tipo precisión de un minuto es
heredado). suficiente.
4. Tipos de Datos de Caracteres (Cadenas de Texto)
Se usan para almacenar texto alfanumérico.
Tipo de Dato Función/Descripción Unicode Uso Común
CHAR(n) Cadena de longitud No Códigos fijos,
fija (1 a 8,000 abreviaturas (ej.
caracteres). Rellena códigos de país de 2
con espacios. letras).
VARCHAR(n) Cadena de longitud No Nombres, títulos,
variable (1 a 8,000 descripciones cortas
caracteres). en idiomas latinos (ej.
español).
NCHAR(n) Cadena de longitud Sí Similar a CHAR, pero
fija (1 a 4,000 para datos que
caracteres). Rellena requieren soporte
con espacios. Unicode.
NVARCHAR(n) Cadena de longitud Sí Recomendado para
variable (1 a 4,000 nombres, direcciones,
caracteres). o cualquier texto
multilingüe.
VARCHAR(MAX) Longitud variable No Almacenamiento de
grande (hasta 2 GB de documentos de texto
datos). largos (ej. artículos,
contenido de log).
NVARCHAR(MAX) Longitud variable Sí Almacenamiento de
grande (hasta 2 GB de documentos
datos). multilingües o
JSON/XML extensos.
TEXT Almacena hasta 2 GB No Solo para
de texto (Tipo compatibilidad con
obsoleto, reemplazado bases de datos muy
por antiguas.
VARCHAR(MAX)).
NTEXT Almacena hasta 2 GB Sí Solo para
de texto (Tipo compatibilidad con
obsoleto, reemplazado bases de datos muy
por antiguas.
NVARCHAR(MAX))
.
5. Tipos de Datos Binarios
Esta categoría se utiliza para almacenar secuencias de bytes, es decir, datos no textuales. Es
especialmente útil cuando se requiere guardar archivos como imágenes, videos o datos cifrados
directamente en la base de datos.
Tipo de Dato Función/Descripción Uso Común
BINARY(n) Datos binarios de longitud fija Hashing, firmas binarias.
(1 a 8,000 bytes). Rellena con
ceros.
VARBINARY(n) Datos binarios de longitud Almacenamiento de pequeños
variable (1 a 8,000 bytes). archivos, claves de cifrado.
VARBINARY(MAX) Datos binarios de longitud Almacenamiento de imágenes,
variable grande (hasta 2 GB). audio, video o documentos
grandes directamente en la
base de datos.
IMAGE Almacena hasta 2 GB de datos Solo para compatibilidad con
binarios (Tipo obsoleto, bases de datos muy antiguas.
reemplazado por
VARBINARY(MAX)).
6. Tipos de Datos Misceláneos
Esta categoría incluye tipos de datos pensados para escenarios específicos, como el manejo de
información geográfica, el uso de identificadores únicos globales (GUID), o el almacenamiento de datos
semiestructurados, como XML y JSON.
Tipo de Dato Función/Descripción Uso Común
UNIQUEIDENTIFIER Almacena un identificador Claves primarias o
único universal (UUID o identificadores que necesitan
GUID) de 16 bytes. ser únicos a nivel global (en
múltiples bases de datos).
SQL_VARIANT Almacena valores de varios Columnas que pueden
tipos de datos de SQL Server contener distintos tipos de
(excepto TEXT, NTEXT, datos, a menudo en estructuras
IMAGE, TIMESTAMP, etc.). flexibles o dinámicas.
XML Almacena datos XML. Soporta Almacenamiento y
indexación y manipulación de procesamiento de documentos
consultas XPath. XML o datos semi-
estructurados.
GEOMETRY Tipo de datos espacial para Almacenamiento de formas
datos euclidianos (planares o geográficas en mapas o
de superficie plana). diseños planos.
GEOGRAPHY Tipo de datos espacial para Almacenamiento de
datos de elipsoide o esféricos ubicaciones terrestres (latitud y
(coordenadas GPS). longitud).
ROWVERSION Número único que se actualiza Detectar si una fila ha sido
automáticamente cada vez que modificada desde que se leyó
se modifica la fila (antes por última vez.
llamado TIMESTAMP).
CURSOR Tipo de datos para almacenar Uso interno para programación
una referencia a un cursor de cursores.
(utilizado en Transact-SQL
para iteración).
TABLE Tipo especial utilizado para Variables locales o tipos de
almacenar un conjunto de retorno para funciones y
resultados para su procedimientos.
procesamiento (variable de
tabla o valor devuelto de una
función).
7. Referencias
● [Link]
● [Link]
● [Link]
view=sql-server-ver17
● [Link]
server-ver17
● [Link]