ISIL - Diseño y Programacion de Base de datos
Tipos de datos en Transact SQL
Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que indica
los posibles valores. El tipo de datos define el formato de almacenamiento, espacio que de disco-
memoria que va a ocupar un campo o variable, restricciones y rango de valores validos.
Transact SQL proporciona una variedad predefinida de tipos de datos . Casi todos los tipos
de datos manejados por Transact SQL son similares a los soportados por SQL.
Tipos de datos numéricos.
SQL Server dispone de varios tipos de datos númericos. Cuanto mayor sea el número que
puedan almacenar mayor será en consecuencia el espacio utilizado para almacenarlo. Como regla
general se recomienda usar el tipo de dato mínimo posible. Todos los dato numéricos admiten el
valor NULL.
Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0.
Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0
a 255.
SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -32768
a 32767.
Int. Una columna o variable de tipo int puede almacenar el rango de valores -231 a 231-1 .
BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -263 a 263-1
.
Decimal(p,s). Una columna de tipo decimal puede almacenar datos númericos decimales sin
redondear. Donde p es la precision (número total del dígitos) y s la escala (número de valores
decimales)
Float. Una columna de datos float puede almacenar el rango de valores -1,79x-10308 a 1,79x-
10308, , si la definimos con el valor máxmo de precisión. La precisión puede variar entre 1 y 53.
Real. Sinónimo de float(24). Puede almacenar el rango de valores -3,4x-1038 a 3,4x-1038,
Money. Almacena valores númericos monetarios de -263 a 263-1, con una precisión de hasta
diexz milesimas de la unidad monetaria.
SmallMoney. Almacena valores númericos monetarios de -214.748,3647 a 214.748,3647, con
una precisión de hasta diez milesimas de la unidad monetaria.
Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos
autonuméricos.
DECLARE @bit bit,
@tinyint tinyint,
Instructor: Jose Leon Cabel – [email protected] Page 1
ISIL - Diseño y Programacion de Base de datos
@smallint smallint,
@int int,
@bigint bigint,
@decimal decimal(10,3), -- 10 digitos, 7 enteros y
-- 3 decimales
@real real,
@double float(53),
@money money
set @bit = 1
print @bit
set @tinyint = 255
print @tinyint
set @smallint = 32767
print @smallint
set @int = 642325
print @int
set @decimal = 56565.234 -- Punto como separador decimal
print @decimal
set @money = 12.34
print @money
Tipos de datos de caracter.
Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando almacenamos
datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la entrada de datos
es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se almacena 'A ', ocupando
los cinco bytes.
Varchar(n).Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando
almacenamos datos en el tipo varchar, unicamente se utilizan los caracteres necesarios,Por
ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo
un byte bytes.
Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan
pertenecer a diferente idomas.
Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan
pertenecer a diferente idomas.
Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
Tipos de datos de fecha.
Datetime. Almacena fechas con una precision de milisegundo. Debe usarse para fechas muy
especificas.
Instructor: Jose Leon Cabel – [email protected] Page 2
ISIL - Diseño y Programacion de Base de datos
SmallDatetime. Almacena fechas con una precision de minuto, por lo que ocupa la mitad de
espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos es un factor
a tener muy en cuenta.
TimeStamp.Se utiliza para marcar un registro con la fecha de inserción - actualización. El tipo
timestamp se actualiza automáticamente cada vez que insertamos o modificamos los datos.
Tipos de datos binarios.
Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud máxima de
8000 bytes.
Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud
máxima de 8000 bytes..Es muy similar a binary, salvo que varbinary utiliza menos espacio en
disco.
Varbinary(max).Igual que varbinary, pero puede almacenar 231-1 bytes
Tipo de datos XML.
XML.Una de las grandes mejoras que incorpora SQL Server 2005 es el soporte nativo para
XML. Como podemos deducir, este tipo de datos se utiliza para almacenar XML.
DECLARE @myxml XML
set @myxml = (SELECT @@SERVERNAME NOMBRE FOR XML RAW, TYPE)
print cast(@myxml as varchar(max))
Obtendremos la siguiente salida: <row nombre="SVR01"/>
Otros tipos de datos.
UniqueIdentifier. Se utiliza para identificadores únicos. Para generar identificadores únicos
debemos utilizar la función NEWID().
DECLARE @myuniqueid UNIQUEIDENTIFIER
set @myuniqueid = NEWID()
print cast(@myuniqueid as varchar(36))
Obtendremos la siguiente salida: 46141D79-102C-4C29-A620-792EA0208637
Sql_Variant.Permite almacenar valores de diferentes tipos de datos. No puede almacena
varchar(max), xml, timestamp y tipos de datos definidos por el usuario.
Tipos de datos personalizados.
Instructor: Jose Leon Cabel – [email protected] Page 3
ISIL - Diseño y Programacion de Base de datos
Transact SQL permite la creación de tipos de datos personalizados, a trevés de la instrucción
CREATE TYPE. Personalmente, desaconsejo el uso de tipos de datos personalizados.
CREATE TYPE MD5 FROM CHAR(32) NULL
GO
DECLARE @miMD5 MD5
set @miMD5 = '0000000000000000000000000000000A'
print @miMD5
Ampliar el tema en el sgte. link
http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/232/Tipos-de-datos-en-
Transact-SQL.aspx
Otro Link de interés:
http://technet.microsoft.com/es-es/library/bb418498.aspx
Instructor: Jose Leon Cabel – [email protected] Page 4