Lo básico sobre distintos tipos de datos
| Tipo de dato | Descripción | Tamaño máximo | Almacenamiento |
|---|---|---|---|
Texto | |||
| char(n) | Cadena de caracteres de ancho fijo | 8000 caracteres | Ancho definido |
| varchar(n) | Cadena de caracteres de ancho variable | 8000 caracteres | 2 bytes + cantidad de caracteres |
| varchar(max) | Cadena de caracteres de ancho variable | 1.073.741.824 caracteres | 2 bytes + cantidad de caracteres |
| text | Cadena de caracteres de ancho variable | 2 GB de datos de texto | 4 bytes + cantidad de caracteres |
| nchar | Cadena Unicode de ancho fijo | 4000 caracteres | Ancho definido x2 |
| nvarchar | Cadena Unicode de ancho variable | 4000 caracteres | |
| nvarchar(max) | Cadena Unicode de ancho variable | 536.870.912 caracteres | |
| ntext | Cadena Unicode de ancho variable | 2 GB de datos de texto | |
| binary(n) | Cadena binaria de ancho fijo | 8000 bytes | |
| varbinary | Cadena binaria de ancho variable | 8000 bytes | |
| varbinary(max) | Cadena binaria de ancho variable | 2 GB | |
| image | Cadena binaria de ancho variable | 2 GB | |
Números | |||
| bit | Número entero que puede ser 0, 1 o NULL | ||
| tinyint | Permite números enteros entre 0 y 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) | Números de precisión fija y de escala. Permite números de 10^38 +1 a 10^38 -1. El parámetro p indica la cantidad total máxima de dígitos que se pueden almacenar (tanto a la izquierda como a la derecha del punto decimal). p debe ser un valor entre 1 y 38. Por defecto es 18. El parámetro s indica la cantidad máxima de dígitos almacenados a la derecha del punto decimal. s debe ser un valor entre 0 y p. El valor por defecto es 0. | 5-17 bytes | |
| numeric(p,s) | Números de precisión fija y de escala. Permite números de 10^38 +1 a 10^38 -1. El parámetro p indica la cantidad total máxima de dígitos que se pueden almacenar (tanto a la izquierda como a la derecha del punto decimal). p debe ser un valor entre 1 y 38. Por defecto es 18. El parámetro s indica la cantidad máxima de dígitos almacenados a la derecha del punto decimal. s debe ser un valor entre 0 y p. El valor por defecto es 0. | 5-17 bytes | |
| smallmoney | Datos monetarios de -214.748,3648 a 214.748,3647 | 4 bytes | |
| money | Datos monetarios de -922.337.203.685.477.5808 a 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 por defecto de n es 53. | 4 u 8 bytes | |
| real | Datos numéricos de precisión flotante de -3.40E + 38 a 3.40E + 38 | 4 bytes | |
Fecha y hora | |||
| 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 | Almacena sólo una fecha. Del 1 de enero de 0001 al 31 de diciembre de 9999 | 3 bytes | |
| time | Almacena sólo una hora con una precisión de 100 nanosegundos | 3-5 bytes | |
| datetimeoffset | Lo mismo que datetime2 con un desfase de zona horaria adicional | 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 sólo puede tener una variable de fecha y hora | ||
Otros | |||
| sql_variant | Almacena hasta 8.000 bytes de datos de varios tipos, excepto text, ntext y timestamp | ||
| uniqueidentifier | Almacena un identificador único global (GUID) | ||
| xml | Almacena datos con formato XML. Máximo 2 GB | ||
| cursor | Almacena una referencia a un cursor utilizado para operaciones de base de datos | ||
| table | Almacena un conjunto de resultados para su posterior procesamiento | ||