En SQL Server, como en todos los motores de bases de datos, existen diferentes tipos de datos, y entre los tipos de datos numéricos se tienen los siguientes.
Resumen
TIPO DE DATO | NOMBRE | TAMAÑO | DOMINIO |
---|---|---|---|
Entero | BIT | 1 bit | 0,1 |
Entero | TINYINT | 1 Byte | 0 a 255 |
Entero | SMALLINT | 2 Bytes | -215 a +215 (-32,768 a +32,768) |
Entero | INT | 4 Bytes | -231 a +231 |
Entero | BIGINT | 8 Bytes | -263 a +263 |
Real | REAL | 4 Bytes | -3.40E+38 a 3.40E+38 |
Real | FLOAT | 4 a 8 Bytes | -1.79E +308 a +1.79E +308 |
Real | DECIMAL NUMERIC |
5 a 17 Bytes (depende de la precisión) | El que se defina con la precisión y escala |
Real | SMALLMONEY | 4 Bytes | -214,748.3648 a +214,748.3647 |
Real | MONEY | 8 Bytes | -922,337,203,685,477.5808 a 922,337,203,685,477.5807 |
Tipo de datos Enteros
Son aquellos números que no tienen punto decimal, positivos o negativos y existen diversos subtipos
BIT
Son enteros que ocupan solo un bit y guardan únicamente un 0 (cero) o un 1 (uno). Si en una tabla existen de 1 a 8 campos BIT entonces ocuparán 1 Byte entre todos. Si existen de 9 a 16 campos BIT se ocuparán 2 Bytes entre todos, y así sucesivamente.
TINYINT
Es un tipo de datos que ocupa 1 Byte y puede guardar números entre 0 y 255
SMALLINT
Es un tipo de datos entero que ocupa 2 Bytes y puede guardar números de -215 a +215. (aproximadamente en el rango de -32768 a +32768).
INT
Es un tipo de datos entero que ocupa 4 Bytes y puede guardar números de -231 a +231. (aproximadamente en el rango de -2,147,483,648 a +2,147,483,648).
BIGINT
Es un tipo de datos entero que ocupa 8 Bytes y puede guardar números de -263 a +263. (aproximadamente en el rango de -9,223,372,036,854,775,808 a +9,223,372,036,854,775,808).
Tipos de datos con punto flotante
Son valores numéricos que pueden guardar valores decimales, es decir, tienen punto decimal. Existen dos subtipos de los tipos de datos reales: FLOAT y REAL. Son útiles cuando se requiere tener fracciones de entero, y además cuando la precisión (el número de decimales) tiende o se espera que sea muy grande (datos científicos como valores con muchos decimales).
REAL
Tipo de datos con punto decimal, de 4 Bytes con un rango de valores de aproximadamente de -3.40E+38 a 3.40E+38 (-3.4 * 1038 a +3.4 * 1038)
FLOAT
Tipo de datos con punto decimal, de 4 a 8 Bytes con un rango de valores de aproximadamente de – -1.79E +308 a +1.79E +308 (-1.79 * 10308 a +1.79 * 10308)
DECIMAL o NUMERIC
Es un tipo de datos numérico real (tienen punto decimal) que permite controlar la precisión o la cantidad de dígitos decimales a guardar. Son útiles cuando conocemos el número de decimales que se van a utilizar (en precios, por ejemplo, no se requiere tener la precisión de más allás de los 2 dígitos decimales). DECIMAL y NUMERIC son intercambiables, significan lo mismo y se define en términos de número de dígitos:
Decimal (precisión, escala)
donde:
- precisión el esl total de dígitos (enteros y decimales).
- escala es el número de decimales
MONEY
Es un tipo de datos especialmente utilizado para representar cantidades monetarias. Existen a su vez dos subtipos de MONEY
SMALLMONEY
Permite guardar cifras entre -214,748.3648 y +214,748.3647, ocupando para ello 4 Bytes de almacenamiento.
MONEY
Permite guardar cifras entre -922,337,203,685,477.5808 y 922,337,203,685,477.5807, ocupando 8 Bytes.
Tratamiento de valores nulos de tipos de datos numéricos en SQL Server
Es importante hacer notar que todos los tipos de datos pueden contener NULL, que es la ausencia de valor.