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 

Moviendo tablas entre Filegroups en SQL Server

Moviendo tablas de un Filegroup a otro en SQL Server

Una base de datos en SQL Server se puede crear con varios archivos donde se guarda la información de las tablas, estos archivos se agrupan en Grupos de archivos llamados Filegroups, cada grupo de archivos puede tener archivos ubicados en diferentes discos y en diferentes carpetas, el objetivo es que la información de las tablas se almacene en archivos diferentes lo que puede optimizar la distribución de la información guardada en la base de datos.

Seguir leyendo

Construyendo CTE en SQL Server

Construyendo CTE

En este artículo se explicará como construir una CTE, Common Table Expressión o Expresión de tabla común, sus usos son muy diversos y necesarios para simplificar consultas con referencias a varias tablas o con muchos filtros.

Seguir leyendo

Select For XML Path SQL Server

Uso de For XML Path en SQL Server

Una consulta Select (Ver Select) se puede mostrar en formato XML (Ver Campos XML), utilizando la opción FOR XML, la cual tiene varios modos, uno de estos es el modo PATH.

Seguir leyendo

Coalesce SQL Server

Usando la función Coalesce

En una base de datos es una buena práctica que no existan valores Null, esto se puede evitar usando la restricción de tipo Default y desde la aplicación el programador puede enviar un dato predeterminado en los campos que el usuario no ingrese valor. (Ver Crear tablas)

Seguir leyendo

Where filtrado de registros SQL Server

Filtrando registros con Where

El filtro de registros al hacer consultas permite seleccionar los datos que se requieren usando comparaciones de dos datos del mismo tipo y crear una expresión lógica con las condiciones que deben de cumplir los registros a seleccionar.

Seguir leyendo

Estructura repetitiva While SQL Server

Usando While

La estructura While es una estructura repetitiva que permite ejecutar un bloque de instrucciones mientras que una expresión lógica sea verdadera.

Seguir leyendo

Cursores en Store Procedure SQL Server

Usando Cursores en Store procedures

Los cursores en SQL Server permiten almacenar en memoria un conjunto de registros resultado de una instrucción Select, el objetivo principal del uso de los cursores es recorrer los registros del conjunto de resultados y realizar algún proceso con cada uno.

Seguir leyendo

Trabajando con fechas en SQL Server

Manejando Fechas en SQL Server

Las funciones de fecha y hora de SQL Server permiten manejar y hacer los cálculos usando campos de tipo Fecha y de tipo Hora, es posible que para efectos de algún proceso se tengan que calcular la cantidad de años, meses o días que existen entre dos fechas determinadas. En este artículo se explica como manejar los datos de tipos fecha para realizar estos cálculos.

Seguir leyendo

Output en Merge SQL Server

Usando Output de Merge

La instrucción Merge realiza instrucciones de inserción de registros, actualización o eliminación de registros en una tabla de destino en la misma base de datos o en otra base de datos según los resultados de combinar los registros con una tabla de origen.

Seguir leyendo