El tipo de datos o data types de SQL de una columna, define qué valor puede contener la columna: entero, carácter, monetario, fecha y hora, binario, etc...
Cada columna de una tabla de base de datos debe tener un nombre y un tipo de datos.
Un desarrollador de SQL debe decidir qué tipo de datos se almacenarán dentro de cada columna al crear una tabla. El tipo de datos es una guía para que SQL comprenda qué tipo de datos se espera dentro de cada columna y también identifica como interactuará SQL con los datos almacenados.
Advertencia: Los tipos de datos pueden tener diferentes nombres en diferentes bases de datos. ¡E incluso si el nombre es el mismo, el tamaño y otros detalles pueden ser diferentes! ¡Revise siempre la documentación!
String Data Types o Tipos de Datos String:
Data Type | Descripción | Tamaño Max. | Almacenamiento |
char(n) | Cadena de caracteres de ancho fijo | 8,000 caracteres | Ancho definido |
varchar(n) | Caracteres string de ancho variable | 8,000 caracteres | 2 bytes + número de caracteres |
varchar(max) | Caracteres string de ancho variable | 1,073,741,824 caracteres | 2 bytes + número de caracteres |
text | Caracteres string de ancho variable | 2GB de datos de texto | 4 bytes + número de caracteres |
nchar | String Unicode de ancho fijo | 4,000 caracteres | Ancho definido x 2 |
nvarchar | String Unicode de ancho variable | 4,000 caracteres | |
nvarchar(max) | String Unicode de ancho variable | 536,870,912 caracteres | |
ntext | String Unicode de ancho variable | 2GB de datos de texto | |
binary(n) | String binario de ancho fijo | 8,000 bytes | |
varbinary | String binario de ancho variable | 8,000 bytes | |
varbinary(max) | String binario de ancho variable | 2GB | |
image | String binario de ancho variable | 2GB |
Numeric Data Types o Tipos de Datos Numéricos
Tipos de datos | Descripción | Almacenamiento |
bit | Número entero que puede ser 0, 1 o NULL | |
tinyint | Permite números enteros del 0 al 255 | 1 byte |
smallint | Permite números enteros entre -32.768 y 32.767 | 2 bytes |
int | Permite números enteros entre -2,147,483,648 y 2,147,483,647 | 4 bytes |
bigint | Permite números enteros entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807 | 8 bytes |
decimal(p,s) | Precisión fija y números de escala. Permite números desde -10^38 +1 hasta 10^38 –1. El parámetro p indica el número total máximo de dígitos que se pueden almacenar (tanto a la izquierda como a la derecha del punto decimal). p debe ser un valor de 1 a 38. El valor predeterminado es 18. El parámetro s indica el número máximo de dígitos almacenados a la derecha del punto decimal. s debe ser un valor de 0 a p. El valor predeterminado es 0 | 5-17 bytes |
numeric(p,s) | Precisión fija y números de escala. Permite números desde -10^38 +1 hasta 10^38 –1. El parámetro p indica el número total máximo de dígitos que se pueden almacenar (tanto a la izquierda como a la derecha del punto decimal). p debe ser un valor de 1 a 38. El valor predeterminado es 18. El parámetro s indica el número máximo de dígitos almacenados a la derecha del punto decimal. s debe ser un valor de 0 a p. El valor predeterminado es 0 | 5-17 bytes |
smallmoney | Datos monetarios de -214.748,3648 a 214.748,3647 | 4 bytes |
money | Datos monetarios desde -922.337.203.685.477.5808 hasta 922.337.203.685.477.5807 | 8 bytes |
float(n) | Datos numéricos de precisión flotante de -1.79E + 308 a 1.79E + 308. El parámetro n indica si el campo debe contener 4 u 8 bytes. float(24) contiene un campo de 4 bytes y float(53) contiene un campo de 8 bytes. El valor predeterminado de n es 53. | 4 or 8 bytes |
real | Datos numéricos de precisión flotante de -3,40E + 38 a 3,40E + 38 | 4 bytes |
Tipos de Datos de Fecha y Hora
Tipo de datos | Descripción | Almacenamiento |
datetime | Del 1 de enero de 1753 al 31 de diciembre de 9999 con una precisión de 3,33 milisegundos | 8 bytes |
datetime2 | Del 1 de enero de 0001 al 31 de diciembre de 9999 con una precisión de 100 nanosegundos | 6-8 bytes |
smalldatetime | Del 1 de enero de 1900 al 6 de junio de 2079 con una precisión de 1 minuto | 4 bytes |
date | Guarde una fecha solamente. Del 1 de enero de 0001 al 31 de diciembre de 9999 | 3 bytes |
time | Almacena un tiempo solo con una precisión de 100 nanosegundos | 3-5 bytes |
datetimeoffset | Lo mismo que datetime2 con la adición de un desplazamiento de zona horaria | 8-10 bytes |
timestamp | Almacena un número único que se actualiza cada vez que se crea o modifica una fila. El valor de la marca de tiempo se basa en un reloj interno y no corresponde al tiempo real. Cada tabla puede tener solo una variable de marca de tiempo |
Otros tipos de datos
Tipo de datos | Descripción |
sql_variant | Almacena hasta 8000 bytes de datos de varios tipos de datos, excepto text, ntext y timestamp |
uniqueidentifier | Almacena un identificador único global (GUID) |
xml | Almacena datos con formato XML. Máximo 2GB |
cursor | Almacena una referencia a un cursor utilizado para operaciones de base de datos. |
table | Almacena un conjunto de resultados para su posterior procesamiento. |