You are on page 1of 29

TIPOS DE DATOS SQL SERVER 2008

Categoras de tipos de datos


Los tipos de datos de SQL Server se organizan en las siguientes categoras: Numricos exactos Cadenas de caracteres Unicode Numricos aproximados Cadenas binarias Fecha y hora Otros tipos de datos Cadenas de caracteres

En SQL Server, segn las caractersticas de almacenamiento, algunos tipos de datos estn designados como pertenecientes a los siguientes grupos: Tipos de datos de valores grandes: varchar(max), nvarchar(max) y varbinary(max) Tipos de datos de objetos grandes: text, ntext, image, varchar(max), nvarchar(max), varbinary(max) y xml

Informacin tomada de : http://msdn.microsoft.com/es-es/library/ms187752.aspx

Numricos exactos
bigint numeric bit smallint decimal smallmoney int tinyint money

int, bigint, smallint y tinyint


[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos numricos exactos que utilizan datos enteros. Tipo de datos bigint int smallint tinyint Intervalo De -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807) De -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647) De -2^15 (-32.768) a 2^15-1 (32.767) De 0 a 255 Almacenamiento 8 bytes 4 bytes 2 bytes 1 byte

Notas
El tipo de datos int es el principal tipo de datos de valores enteros de SQL Server. El tipo de datos bigint est pensado para utilizarse cuando los valores enteros pueden exceder el intervalo admitido por el tipo de datos int. bigint se encuentra entre smallmoney e int en el grfico de prioridad de tipo de datos. Las funciones slo devuelven bigint si la expresin de parmetro es un tipo de datos bigint. SQL Server no convierte automticamente otros tipos de datos enteros (tinyint, smallint e int) en bigint. Advertencia: Cuando se utilizan los operadores aritmticos +, -, *, / o % para llevar a cabo conversiones implcitas o explcitas de valores constantes int, smallint, tinyint o bigint en tipos de datosfloat, real, decimal o numeric, las reglas que aplica SQL Server al calcular el tipo de datos y la precisin de los resultados de la expresin varan dependiendo de si la consulta tiene parmetros automticos o no.

Por lo tanto, expresiones similares en las consultas pueden generar resultados diferentes. Cuando una consulta no tiene parmetros automticos, el valor constante primero se convierte en numeric, cuya precisin es lo suficientemente grande como para conservar el valor de la constante, antes de realizar la conversin al tipo de datos especificado. Por ejemplo, el valor constante 1 se convierte en numeric (1, 0) y el valor constante 250 se convierte en numeric (3, 0). Cuando una consulta tiene parmetros automticos, el valor constante siempre se convierte en numeric (10, 0) antes de convertirse en el tipo de datos final. Cuando se utiliza el operador /, no slo puede diferir la precisin del tipo de los resultados entre consultas similares, sino que tambin puede variar el valor de los resultados. Por ejemplo, el valor de los resultados de una consulta con parmetros automticos que incluye la expresin SELECT CAST (1.0 / 7 AS float) variar con respecto a la misma consulta cuando no tenga parmetros automticos, puesto que los resultados de la primera se truncarn para ajustarse al tipo de datos numeric (10, 0). Para obtener ms informacin acerca de las consultas con parmetros, vea Simple Parameterization.

decimal y numeric
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos numricos que tienen precisin y escala fijas. decimal[ (p[ ,s] )] y numeric[ (p[ ,s] )] Nmeros de precisin y escala fijas. Cuando se utiliza la precisin mxima, los valores vlidos se sitan entre - 10^38 +1 y 10^38 - 1. Los sinnimos de ISO para decimal son de tipodec y dec(p, s). numeric es funcionalmente equivalente a decimal.

p (precisin) El nmero total mximo de dgitos decimales que se puede almacenar, tanto a la izquierda como a la derecha del separador decimal. La precisin debe ser un valor comprendido entre 1 y la precisin mxima de 38. La precisin predeterminada es 18. s (escala) El nmero mximo de dgitos decimales que se puede almacenar a la derecha del separador decimal. La escala debe ser un valor comprendido entre 0 y p. Slo es posible especificar la escala si se ha especificado la precisin. La escala predeterminada es 0; por lo tanto, 0 <= s <= p. Los tamaos de almacenamiento mximo varan, segn la precisin.

Precisin
1-9 10-19 20-28 29-38

Bytes de almacenamiento
5 9 13 17

bit
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipo de datos entero que puede aceptar los valores 1, 0 o NULL.

Notas
SQL Server Database Engine (Motor de base de datos de SQL Server) optimiza el almacenamiento de las columnas de tipo bit.Si una tabla contiene 8 columnas o menos de tipo bit, stas se almacenan como 1 byte. Si hay entre 9 y 16 columnas de tipo bit, se almacenan como 2 bytes, y as sucesivamente. Los valores de cadena TRUE y FALSE se pueden convertir en valores de tipo bit: TRUE se convierte en 1 y FALSE en 0.

money y smallmoney
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos que representan valores monetarios o de moneda.

Tipo de datos money smallmoney

Intervalo De -922,337,203,685.477,5808 a 922,337,203,685.477,5807 De - 214.748,3648 a 214.748,3647

Almacenamiento 8 bytes 4 bytes

Numricos aproximados
float real

float y real [Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios
en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos numricos y aproximados que se utilizan con datos numricos de coma flotante. Los datos de coma flotante son aproximados; por tanto, no todos los valores del intervalo del tipo de datos se pueden representar con exactitud.

Nota: El sinnimo ISO de real es el tipo float(24). Tipo de datos float real Intervalo De - 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a 1,79E+308 De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E - 38 a 3,40E + 38 Almacenamiento Depende del valor de n. 4 Bytes

Sintaxis
float [ (n) ] Donde n es el nmero de bits que se utilizan para almacenar la mantisa del nmero float en notacin cientfica y, por tanto, dicta su precisin y el tamao de almacenamiento.Si se especifica n, debe ser un valor entre 1 y 53. El valor predeterminado de n es 53.

nvalue 1-24 25-53 Nota:

Precisin 7 dgitos 15 dgitos

Tamao de almacenamiento 4 bytes 8 bytes

SQL Server trata n como uno de dos valores posibles.Si 1<=n<=24, n se trata como 24. Si 25<=n<=53, n se trata como 53.

El tipo de datos float[(n)] de SQL Server cumple con el estndar ISO para todos los valores de n desde 1 hasta 53. El sinnimo de double precision es el tipo float(53).

Fecha y hora
date datetimeoffset datetime2 smalldatetime datetime time

date
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o

gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Define una fecha. Para obtener informacin general acerca de todos los tipos de datos y funciones de fecha y hora de TransactSQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL). Para obtener informacin y ejemplos comunes a los tipos de datos y funciones de fecha y hora, vea Using Date and Time Data.

Descripcin de date
Propiedad Sintaxis Uso Valor date DECLARE @MyDate date CREATE TABLE Table1 ( Column1 date ) Formato de literal de cadena predeterminado (se usa para el cliente de nivel inferior) AAAA-MM-DD Para obtener ms informacin, vea la seccin sobre la compatibilidad con versiones anteriores de clientes de nivel inferior deUsing Date and Time Data. De 0001-01-01 a 9999-12-31 Del 1 de enero del ao 1 despus de Cristo al 31 de diciembre de 9999 Intervalos de elementos AAAA es una cifra de cuatro dgitos comprendida entre 0001 y 9999 que representa un ao. MM es una cifra de dos dgitos comprendida entre 01 y 12 que representa un mes del ao especificado. DD es una cifra de dos dgitos comprendida entre 01 y 31 dependiendo del mes, que representa un da del mes especificado. Longitud en caracteres Precisin, escala Tamao de almacenamiento 10 posiciones 10, 0 3 bytes, fijo

Intervalo

Estructura de almacenamiento Precisin Valor predeterminado

1, fecha de almacenes de enteros de 3 bytes. Un da 1900-01-01 Este valor se utiliza para la parte de fecha anexada para la conversin implcita de time a datetime2 o datetimeoffset.

Calendario Precisin de fracciones de segundo definida por el usuario Conservacin y reconocimiento del desplazamiento de zona horaria Reconocimiento del horario de verano

Gregoriano No No No

Formatos del literales de cadena compatibles para date


En las siguientes tablas se muestran los formatos de literales de cadena vlidos para el tipo de datos date.

Numrico mda [m]m/dd/[aa]aa [m]m-dd-[aa]aa [m]m.dd.[aa]aa mad mm/[aa]aa/dd mm-[aa]aa/dd [m]m.[aa]aa.dd dma dd/[m]m/[aa]aa dd-[m]m-[aa]aa

Descripcin [m]m, dd, y [aa]aa representa el mes, el da y el ao en una cadena con marcas de barras diagonales (/), guiones (-) o puntos (.) como separadores. Slo se admiten los aos de dos o cuatro dgitos. Siempre que sea posible utilice los aos de cuatro dgitos. Para especificar un nmero entero entre 0001 y 9999 que represente el ao lmite para interpretar aos de dos dgitos como aos de cuatro dgitos, utilice la two digit year cutoff (opcin). Un ao de dos dgitos menor o igual que los ltimos dos dgitos del ao lmite pertenece al mismo siglo que el ao lmite. En cambio, un ao de dos dgitos mayor que los ltimos dos dgitos del ao lmite pertenece al siglo anterior al ao lmite. Por ejemplo, si el valor del ao lmite de dos dgitos es 2049 (el valor predeterminado), el ao de dos dgitos 49 se interpreta como 2049 y el ao de dos dgitos 50 se interpreta como 1950. La configuracin de idioma actual est determinada por el formato de fecha predeterminado. Para cambiar el formato de la fecha, utilice las instrucciones SET LANGUAGE y SET DATEFORMAT. El formato ydm no se admite para date.

dd.[m]m.[aa]aa dam dd/[aa]aa/[m]m dd-[aa]aa-[m]m dd.[aa]aa.[m]m amd [aa]aa/[m]m/dd [aa]aa-[m]m-dd [aa]aa-[m]m-dd

Alfabtico
mes [dd][,] aaaa mes dd[,] [aa]aa mes aaaa [dd] [dd] mes[,] aaaa dd mes[,][aa]aa dd [aa]aa mes [dd] aaaa mes aaaa mes [dd] aaaa [dd] mes

Descripcin
mon representa el nombre completo del mes o la abreviatura del mes en el idioma actual. Las comas son opcionales y se omite el uso de maysculas. Para evitar la ambigedad, use aos de cuatro dgitos. Si falta el da, se usar el primer da del mes.

ISO 8601
AAAA-MM-DD YYYYMMDD

Descripcin
Igual que el estndar SQL. ste es el nico formato que se define como una norma internacional.

Sin separacin
[aa]aammdd aaaa[mm][dd]

Descripcin
Los datos date se pueden especificar con cuatro, seis u ocho dgitos. Una cadena de seis u ocho dgitos se interpretan siempre como ymd. El mes y el da deben ser siempre de dos dgitos. Una cadena de cuatro dgitos se interpreta como el ao.

ODBC
{ d 'aaaa-mm-dd' }

Descripcin
Especfico de la API de ODBC: Funciona en SQL Server 2008 como en SQL Server 2005.

Formato W3C XML


aaaa-mmddDZH

Descripcin
Especficamente admitido para uso de XML/SOAP. DZH es el designador de zona horaria (Z o + hh: mm o -hh:mm).

hh:mm representa el desplazamiento de zona horaria. hh es una cifra de dos dgitos comprendidos entre 0 a 14 y representa el nmero de horas en el desplazamiento de zona horaria. MM es una cifra de dos dgitos, de 0 a 59, que representa el nmero de minutos adicionales en el desplazamiento de zona horaria. + (ms) o (menos) es el signo que se usa obligatoriamente para indicar el desplazamiento de zona horaria. Indica si el desplazamiento de zona horaria se suma o resta de la hora universal coordinada (UTC) para obtener la hora local. El intervalo vlido de desplazamiento de zona horaria es de -14: 00 a +14: 00.

Compatibilidad con ANSI e ISO 8601

date cumple la definicin del estndar ANSI SQL para el calendario Gregoriano: "NOTA 85 - los tipos de datos datetime permitirn las fechas en el formato Gregoriano que se va a almacenar en el intervalo de fechas de 0001.01.01 CE a 9999-12-31 CE."

El formato predeterminado del literal de cadena (que se usa para clientes de nivel inferior) cumple con el formato del estndar SQL, que se define como AAAA-MM-DD. Este formato es igual que la definicin de ISO 8601 para DATE.

Ejemplos

En el ejemplo siguiente se comparan los resultados de convertir una cadena a los tipos de datos de fecha y hora.

Copiar SELECT CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 'smalldatetime' ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 'datetime2' ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 'datetimeoffset';
ste es el conjunto de resultados.

Tipo de datos
time date smalldatetime datetime datetime2 datetimeoffset

Salida
12:35:29. 1234567 2007-05-08 2007-05-08 12:35:00 2007-05-08 12:35:29.123 2007-05-08 12:35:29. 1234567 2007-05-08 12:35:29.1234567 +12:15

Cadenas de caracteres
char varchar text

char y varchar
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Son tipos de datos de caracteres que tienen longitud fija o variable. char [ ( n ) ] Datos de caracteres no Unicode de longitud fija, con una longitud de n bytes. n debe ser un valor entre 1 y 8.000. El tamao de almacenamiento es n bytes. El sinnimo ISO de char es el tipo character. varchar [ ( n | max ) ] Datos de caracteres no Unicode de longitud variable. n puede ser un valor entre 1 y 8.000. max indica que el tamao de almacenamiento mximo es de 2^31-1 bytes. El tamao de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinnimos ISO de varchar sonchar varying o character varying.

Notas
Cuando no se especifica n en una instruccin de definicin de datos o de declaracin de variable, la longitud predeterminada es 1. Cuando no se especifica n al utilizar las funciones CAST y CONVERT, la longitud predeterminada es 30. A los objetos que utilizan char o varchar se les asigna la intercalacin predeterminada de la base de datos, a menos que se asigne una intercalacin especfica mediante la clusula COLLATE. La intercalacin controla la pgina de cdigos utilizada para almacenar los datos de caracteres. Si tiene sitios que admiten varios idiomas, considere el uso de tipos de datos Unicode nchar o nvarchar para reducir al mnimo los problemas de conversin de caracteres. Si usa char ovarchar, siga estas recomendaciones: Utilice char cuando los tamaos de las entradas de datos de columna sean coherentes. Utilice varchar cuando los tamaos de las entradas de datos de columna varen de forma considerable. Utilice varchar(max) cuando los tamaos de las entradas de datos de columna varen de forma considerable y se pudieran superar los 8.000 bytes.

Si SET ANSI_PADDING es OFF cuando se ejecuta CREATE TABLE o ALTER TABLE, una columna de tipo char definida como NULL se trata como si fuera de tipo varchar. Si la pgina de cdigos de la intercalacin utiliza caracteres de doble byte, el tamao de almacenamiento sigue siendo de n bytes. Dependiendo de la cadena de caracteres, el tamao de almacenamiento de n bytes puede ser inferior a n caracteres.

Ejemplos
A. Mostrar el valor predeterminado de n cuando se utiliza en una declaracin de variable.
En el ejemplo siguiente se muestra que el valor predeterminado de n es 1 para los tipos de datos char y varchar cuando se utilizan en una declaracin de variable. Copiar DECLARE @myVariable AS varchar DECLARE @myNextVariable AS char SET @myVariable = 'abc' SET @myNextVariable = 'abc' --The following returns 1 SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable); GO

B. Mostrar el valor predeterminado de n cuando varchar se utiliza con CAST y CONVERT.


En el ejemplo siguiente se muestra que el valor predeterminado de n es 30 cuando se utiliza el tipo de datos char o varchar con las funciones CAST y CONVERT. Copiar DECLARE @myVariable AS varchar(40) SET @myVariable = 'This string is longer than thirty characters' SELECT CAST(@myVariable AS varchar) SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength'; SELECT CONVERT(char, @myVariable) SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';

Text
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Para obtener ms informacin acerca del tipo de datos text, vea ntext, text e image (Transact-SQL).

Cadenas de caracteres Unicode


nchar nvarchar ntext

nchar y nvarchar
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos de caracteres, para datos Unicode de longitud fija, nchar, o variable, nvarchar, y que utilizan el juego de caracteres UNICODE UCS-2. nchar [ ( n ) ] Datos de carcter Unicode de longitud fija, con n caracteres. n debe estar comprendido entre 1 y 4.000. El tamao de almacenamiento es dos veces n bytes. Los sinnimos para ncharen ISO son national char y national character. nvarchar [ ( n | max ) ] Datos de carcter Unicode de longitud variable. npuede ser un valor comprendido entre 1 y 4.000. max indica que el tamao mximo de almacenamiento es 2^31-1 bytes. El tamao de almacenamiento en bytes es dos veces el nmero de caracteres especificado + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinnimos paranvarchar en ISO son national char varying y national character varying.

Notas
Cuando no se especifica el argumento n en una instruccin de definicin de datos o de declaracin de variable, la longitud predeterminada es 1. Cuando no se especifica el argumento n en la funcin CAST, la longitud predeterminada es 30.

Use nchar cuando sea probable que el tamao de las entradas de datos de las columnas sea similar. Use nvarchar cuando sea probable que el tamao de las entradas de datos de las columnas vare. sysname es un tipo de datos definido por el usuario y suministrado por el sistema, que es funcionalmente equivalente a nvarchar(128), excepto que no acepta valores NULL. sysname se usa para hacer referencia a nombres de objetos de base de datos. Los objetos que utilizan nchar o nvarchar se asignan a la intercalacin predeterminada de la base de datos, a menos que se asigne un intercalacin especfica por medio de la clusula COLLATE. SET ANSI_PADDING siempre est en ON para nchar y nvarchar. SET ANSI_PADDING OFF no se aplica a los tipos de datos nchar ni nvarchar.

ntext, text e image


[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.]

Importante:
Los tipos de datos ntext, text e image se quitarn en una versin futura de Microsoft SQL Server. Evite su uso en nuevos trabajos de desarrollo y piense en modificar las aplicaciones que los usan actualmente. Utilice nvarchar(max), varchar(max) y varbinary(max) en su lugar.

Tipos de datos de longitud fija y variable para almacenar valores de gran tamao con datos de caracteres y binarios Unicode y no Unicode. Los datos Unicode utilizan el juego de caracteres UNICODE UCS-2.
ntext Datos Unicode de longitud variable con una longitud mxima de 2^30 - 1 (1.073.741.823) caracteres. El tamao del almacenamiento, en bytes, es dos veces el nmero de caracteres especificado. El sinnimo de ISO para ntext es national text. text Datos no Unicode de longitud variable de la pgina de cdigos del servidor y con una longitud mxima de 2^31-1 (2.147.483.647) caracteres. Cuando la pgina de cdigos del servidor utiliza caracteres de doble byte, el almacenamiento sigue siendo de 2.147.483.647 bytes. Dependiendo de la cadena de caracteres, el espacio de almacenamiento puede ser inferior a 2.147.483.647 bytes. image Datos binarios de longitud variable desde 0 hasta 2^31-1 (2.147.483.647) bytes.

Cadenas binarias
binary varbinary image

binary y varbinary
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final

de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipos de datos binarios de longitud fija o variable. binary [ ( n ) ] Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor que oscila entre 1 y 8.000. El tamao de almacenamiento es de n bytes. varbinary [ ( n | max) ] Datos binarios de longitud variable. n puede ser un valor que oscila entre 1 y 8.000. max indica que el tamao mximo de almacenamiento es de 2^31-1 bytes.El tamao de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 bytes. El sinnimo de ANSI SQL para varbinary esbinary varying.

Notas
Cuando no se especifica el argumento n en una instruccin de definicin de datos o de declaracin de variable, la longitud predeterminada es 1. Cuando no se especifica el argumento n con la funcin CAST, la longitud predeterminada es 30. Utilice binary cuando los tamaos de las entradas de datos de columna sean coherentes. Utilice varbinary cuando considerablemente. Utilice varbinary(max) cuando las entradas de datos de columna superen los 8.000 bytes. los tamaos de las entradas de datos de columna varen

image

[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Para obtener informacin acerca del tipo de datos image, vea ntext, text e image (Transact-SQL).

Otros tipos de datos


cursor timestamp hierarchyid uniqueidentifier sql_variant xml table

cursor
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que

es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Un tipo de datos para las variables o para los parmetros de resultado de los procedimientos almacenados que contiene una referencia a un cursor. Las variables creadas con el tipo de datos cursor aceptan NULL. Las operaciones a las que pueden hacer referencia las variables y parmetros que tienen un tipo de datos cursor son: Las instrucciones DECLARE @local_variable y SET @local_variable. Las instrucciones del cursor OPEN, FETCH, CLOSE y DEALLOCATE. Los parmetros de resultado de procedimientos almacenados. La funcin CURSOR_STATUS. Los procedimientos almacenados del sistema sp_cursor_list, sp_describe_cursor, sp_describe_cursor_tables y sp_describe_curs or_columns.

Importante:
El tipo de datos cursor no se puede utilizar para una columna en una instruccin CREATE TABLE.

Nota:
En esta versin de SQL Server, la columna de salida cursor_name de sp_cursor_list y sp_describe_cursor devuelve el nombre de la variable de cursor. En versiones anteriores, esta columna de resultado devuelve un nombre generado por el sistema.

hierarchyid
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] El tipo de datos del sistema de hierarchyid es de longitud variable. Use hierarchyid para representar la posicin en una jerarqua. Una columna de tipo hierarchyid no representa automticamente un rbol. Depender de la aplicacin generar y asignar los valores hierarchyid de tal forma que la relacin deseada entre las filas se refleje en los valores. Un valor del tipo de datos hierarchyid representa una posicin en una jerarqua de rbol. Los valores de hierarchyid tienen las siguientes propiedades. El nmero medio de bits necesarios para representar un nodo en un rbol con n nodos depende del promedio de nodos secundarios (el promedio de elementos secundarios de un nodo). Para multiplicadores de salida pequeos (0-7), el tamao es aproximadamente 6*logAn bits, donde A es el promedio de nodos secundarios. Un nodo en una jerarqua organizativa de 100.000 personas con un promedio de nodos secundarios de 6 niveles supone aproximadamente 38 bits. Esto se redondea a 40 bits (o 5 bytes) para el almacenamiento. La comparacin se realiza con prioridad a la profundidad Muy compactos

Dados dos valores hierarchyid a y b, a<b quiere decir que a viene antes que b en un corte transversal de prioridad a la profundidad del rbol. Los ndices de los tipos de datoshierarchyid estn en orden con prioridad a la profundidad y los nodos cercanos entre s en un corte transversal de prioridad a la profundidad se almacenan casi uno junto a otro.

Por ejemplo, los elementos secundarios de un registro se almacenan adyacentes a ese registro. Para obtener ms informacin, consulte Using hierarchyid Data Types (Database Engine). Compatibilidad con inserciones y eliminaciones arbitrarias

Con el mtodo GetDescendant siempre es posible generar un miembro del mismo nivel a la derecha de cualquier nodo determinado, a la izquierda de cualquier nodo determinado, o entre dos miembros cualesquiera del mismo nivel. Se mantiene la propiedad comparison cuando se inserta o elimina un nmero arbitrario de nodos de la jerarqua. La mayora de las inserciones y eliminaciones conservan la propiedad compactness. Sin embargo, las inserciones entre dos nodos generarn valores hierarchyid con una representacin ligeramente menos compacta. La codificacin usada en el tipo hierarchyid est limitada a 892 bytes. Por consiguiente, el tipo hierarchyid no podr representar los nodos con demasiados niveles en su representacin como para caber en los 892 bytes. El tipo hierarchyid est disponible para los clientes CLR como el tipo de datos SqlHierarchyId.

Notas

El tipo hierarchyid codifica lgicamente la informacin de un nodo nico en un rbol de jerarqua mediante la codificacin de la ruta de acceso desde la raz del rbol hasta el nodo. Este tipo de ruta de acceso se representa lgicamente como una secuencia de etiquetas de nodo de todos los elementos secundarios visitados despus de la raz. Una barra diagonal inicia la representacin y una barra diagonal nica representa una ruta de acceso que solo visita la raz. Para los niveles por debajo de la raz, cada etiqueta se codifica como una secuencia de enteros separados por puntos. La comparacin entre los elementos secundarios se realiza comparando las secuencias de enteros separados por puntos en orden alfabtico. Una barra diagonal termina cada nivel. Por consiguiente, una barra diagonal separa los elementos primarios de los secundarios. Por ejemplo, los niveles de las siguientes rutas de acceso hierarchyidson 1, 2, 2, 3 y 3, respectivamente:

sql_variant

[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Tipo de datos que almacena valores de varios tipos de datos admitidos en SQL Server. Convenciones de sintaxis de Transact-SQL

Sintaxis
sql_variant

Notas
sql_variant puede utilizarse en columnas, parmetros, variables y valores devueltos de funciones definidas por el usuario. sql_variant permite que estos objetos de base de datos admitan valores de otros tipos de datos. Una columna de tipo sql_variant puede contener filas de tipos de datos diferentes. Por ejemplo, una columna definida como sql_variant puede almacenar valores int, binary y char. En la tabla siguiente se muestran los tipos de valores que no se pueden almacenar mediante sql_variant:

varchar(max) nvarchar(max) text image sql_variant hierarchyid Tipos definidos por el usuario

varbinary(max) xml ntext timestamp geography geometry

sql_variant puede tener una longitud mxima de 8.016 bytes. Esto incluye la informacin y el valor de tipo base. La longitud mxima del tipo base real es 8.000 bytes. Un tipo de datos sql_variant debe convertirse en su valor de tipo de datos base antes de poder tomar parte en operaciones como la adicin y la sustraccin. Se puede asignar un valor predeterminado a sql_variant. Este tipo de datos tambin puede incluir NULL como valor subyacente, aunque estos valores NULL no dispondrn de un tipo base asociado. Adems, sql_variant no puede tener otro sql_variant como su tipo base. Una clave nica, primaria o externa puede incluir columnas del tipo sql_variant, aunque la longitud total de los valores de datos que integran la clave de una fila determinada no debe superar la longitud mxima de un ndice. sta es de 900 bytes. Una tabla puede constar de cualquier nmero de columnas sql_variant. No se puede utilizar sql_variant en CONTAINSTABLE y FREETEXTTABLE. ODBC no es totalmente compatible con sql_variant. Por tanto, las columnas de consultas sql_variant se devuelven como datos binarios con el proveedor OLE DB de Microsoft para ODBC (MSDASQL). Por ejemplo, una columna sql_variant que contiene los datos de la cadena de caracteres 'PS2091' se devuelve como 0x505332303931.

Comparar los valores de sql_variant


El tipo de datos sql_variant pertenece a la parte superior de la lista de jerarquas de tipos de datos para conversin. En las comparaciones de sql_variant, el orden de la jerarqua del tipo de datos SQL Server se agrupa en familias de tipos de datos.

Jerarqua de tipo de datos


sql_variant datetime2 datetimeoffset datetime smalldatetime date time float real decimal

Familia de tipo de datos


sql_variant Fecha y hora Fecha y hora Fecha y hora Fecha y hora Fecha y hora Fecha y hora Valor numrico aproximado Valor numrico aproximado Valor numrico exacto

money smallmoney bigint int smallint tinyint bit nvarchar nchar varchar char varbinary binary uniqueidentifier

Valor numrico exacto Valor numrico exacto Valor numrico exacto Valor numrico exacto Valor numrico exacto Valor numrico exacto Valor numrico exacto Unicode Unicode Unicode Unicode Binario Binario Uniqueidentifier

Las comparaciones de sql_variant siguen estas reglas: Cuando se comparan valores sql_variant de tipos de datos base distintos y los tipos de datos base estn en familias de tipos de datos diferentes, el valor cuya familia de tipo de datos ocupa una posicin superior en el grfico de jerarqua se considera el mayor de los dos valores. Cuando se comparan valores sql_variant de tipos de datos base distintos y los tipos de datos base estn en la misma familia de tipos de datos, el valor cuyo tipo de datos base ocupa una posicin inferior en el grfico de jerarqua se convierte implcitamente al otro tipo de datos y, a continuacin, se realiza la comparacin. Cuando se comparan valores sql_variant de los tipos de datos char, varchar, nchar o nvarchar, en primer lugar se comparan sus intercalaciones por los siguientes criterios: LCID, versin de LCID, marcas de comparacin e Id. de orden. Cada uno de estos criterios se compara como valores enteros y en el orden enumerado. Si todos estos criterios son iguales, se comparan los valores reales de las cadenas segn la intercalacin.

table
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del

contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Is a special data type that can be used to store a result set for processing at a later time. table is primarily used for temporary storage of a set of rows returned as the result set of a table-valued function.

xml

[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios

en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.]

uniqueidentifier
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Es un GUID de 16 bytes.

Notas
Una columna o una variable local de tipo de datos uniqueidentifier se puede inicializar en un valor de las siguiente formas:

Mediante la funcin NEWID. Mediante la conversin a partir de una constante de cadena con el formato xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx, donde cada x es un dgito hexadecimal en el intervalo 0-9 o a-f. Por ejemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF es un valor uniqueidentifier vlido.

Con los valores uniqueidentifier se pueden utilizar operadores de comparacin. No obstante, no se implementa la ordenacin mediante la comparacin de los patrones de bits de los dos valores. Las nicas operaciones que se pueden realizar con un valor uniqueidentifier son comparaciones (=, <>, <, >, <=, >=) y comprobaciones para NULL (IS NULL e IS NOT NULL). No es posible utilizar otros operadores aritmticos. Con el tipo de datos uniqueidentifier, se pueden utilizar todas las propiedades y restricciones de columna, excepto IDENTITY. La replicacin de mezcla y transaccional con suscripciones de actualizacin utiliza

columnas uniqueidentifier para garantizar que las filas se identifican de forma exclusiva en varias copias de la tabla.

rowversion (Transact-SQL)
[Este tema pertenece a la documentacin de la versin preliminar y est sujeto a cambios en versiones futuras. Los temas en blanco se incluyen como marcadores de posicin. NOTA: Con el fin de proporcionarle contenido adicional en distintos idiomas, Microsoft ofrece documentacin localizada mediante mtodos de traduccin alternativos. Para esta versin preliminar, parte del contenido de esta documentacin se ha traducido mediante el uso de estos mtodos. Microsoft es consciente de que los documentos traducidos de esta forma no son siempre perfectos, por lo que es posible que este artculo contenga errores de vocabulario, sintaxis o gramtica. La versin final de este contenido se traducir por los mtodos tradicionales y la calidad ser igual que la de las versiones anteriores.] Es un tipo de datos que expone nmeros binarios nicos generados automticamente en una base de datos. rowversion suele utilizarse como mecanismo para marcar la versin de las filas de la tabla. El tamao de almacenamiento es de 8 bytes. El tipo de datos rowversion es simplemente un nmero que se incrementa y no conserva una fecha o una hora. Para registrar una fecha o una hora, use un tipo de datos datetime2.

Notas
Cada base de datos tiene un contador que se incrementa por cada operacin de insercin o actualizacin que se lleva a cabo en una tabla que contiene una columna rowversion en la base de datos. Este contador es la versin de fila (rowversion) de la base de datos. Realiza un seguimiento de una hora relativa de una base de datos, no una hora real que pueda asociarse con un reloj. Una tabla slo puede tener una columna rowversion. Cada vez que se modifica o inserta una fila con una columna rowversion, el valor rowversion de la base de datos incrementado se inserta en la columna rowversion. Esta propiedad hace que una columna rowversion sea un mal candidato para claves, especialmente claves principales. Cualquier actualizacin de la fila hace que cambie el valor rowversion, con lo que cambia el valor de la clave. Si la columna est en una clave principal, el valor de la clave principal antigua deja de ser vlido, as como las claves externas que hacen referencia al valor antiguo. Si se hace referencia a la tabla en un cursor dinmico, todas las actualizaciones cambian la posicin de las filas en el cursor. Si la columna es una clave de ndice, todas las actualizaciones de la fila de datos tambin generan actualizaciones del ndice. timestamp es el sinnimo del tipo de datos rowversion y est sujeto al comportamiento de los sinnimos de tipos de datos. En las instrucciones DDL, utilice rowversion en lugar

detimestamp siempre que sea posible. Para obtener ms informacin, vea Sinnimos de tipos de datos (Transact-SQL). El tipo de datos timestamp de Transact-SQL es distinto del tipo de datos timestamp definido en el estndar ISO.

You might also like