Los tipos de datos de SQL Server se organizan en las siguientes categorías: 

              Números exactos 
              Números aproximados 
              Fecha y hora 
              Cadena de caracteres 
              Cadenas de caracteres Unicode 
              Cadenas binarias 
              Otros tipos de datos 

       En SQL Server, según las características de almacenamiento, algunos tipos de datos 
están 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. 

                              
Tipo de dato                                        Intervalo                                           Almacenamiento 
Bigint          De ‐2^63 (‐9.223.372.036.854.775.808) a 2^63‐1 (9.223.372.036.854.775.807)                      8 bytes 
Bit             Tipo de datos entero que puede aceptar los valores 1, 0 o NULL.                          
                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. 
Decimal         decimal [(p, [(s)])] Cuando se utiliza la precisión máxima, los valores válidos se   
                sitúan entre ‐ 10^38 +1 y 10^38 ‐ 1. 
                 
                p (precisión)  
                              El número total máximo 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. 
                s (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; por lo 
                              tanto, 0 <= s <= p. Los tamaños de almacenamiento máximo 
                              varían, según la precisión. 
                                       Precisión             Bytes de 
                                                        almacenamiento 
                                          1 ‐ 9                  5 
                                         10‐19                   9 
                                         20‐28                  13 
                 
                                         29‐38                  17 
Int             De ‐2^31 (‐2.147.483.648) a 2^31‐1 (2.147.483.647)                                      4 bytes 
Money           De ‐922,337,203,685.477,5808 a 922,337,203,685.477,5807                                 8 bytes 
Numeric         Se emplea al igual que el tipo decimal. Numeric[(p, s)]                                  
Smallint        De ‐2^15 (‐32.768) a 2^15‐1 (32.767)                                                    2 bytes 
Smallmoney      De ‐ 214.748,3648 a 214.748,3647                                                        4 bytes 
Tinyint         De 0 a 255                                                                              1 byte 
                                          Tabla 3.1 Numéricos exactos. 
                                       
Tipo de dato                                               Intervalo                                            Almacenamiento
Float               De – 1,79E+308 a ‐2,23E‐308, 0 y de 2,23E‐308 a 1,79E+308                                  Depende de n. 
                                                                                                                
                    float [ ( n ) ]  
                                   Donde n es el número de bits que se utilizan para almacenar la 
                                   mantisa del número float en notación científica y, por tanto, 
                                   dicta su precisión y el tamaño de almacenamiento. Si se 
                                   especifica n, debe ser un valor entre 1 y 53. El valor 
                                   predeterminado de n es 53. 
                                   Valor de n      Precisión     Tamaño de almacenamiento
                                     1‐24          7 dígitos                4 bytes
                                     25‐53        15 dígitos                8 bytes
                     
                     
Real                De – 3,40E + 38 a ‐1,18E – 38, 0 y de 1,18E – 38 a 3,40E + 38                               4 Bytes 
                                           Tabla 3.2 Numéricos aproximados. 
 

                                     Tipo de dato                             Salida
                                   Date                    2007‐05‐08 
                                   Datetime                2007‐05‐08 12:35:29.123 
                                   Datetime2               2007‐05‐08 12:35:29. 1234567 
                                   Datetimeoffset          2007‐05‐08 12:35:29.1234567 +12:15 
                                   Smalldatetime           2007‐05‐08 12:35:00 
                                   Time                    12:35:29. 1234567 
                                                    Tabla 3.3 Fecha y hora. 

    Tipo de dato                                                          Intervalo 
Char                    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 tamaño de almacenamiento es n bytes.  
Text                    text  
                                       Datos  no  Unicode  de  longitud  variable  de  la  página  de  códigos  del  servidor  y  con  una 
                                       longitud máxima de 2^31‐1 (2.147.483.647) caracteres. Cuando la página de códigos 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. 
Varchar                 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  tamaño  de  almacenamiento  máximo  es  de  2^31‐1  bytes.  El 
                                       tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los 
                                       datos especificados pueden tener una longitud de 0 caracteres.  
                                              Tabla 3.4 Cadenas de caracteres. 
                                               
Tipo de dato                                                      Intervalo
Nchar           nchar [ ( n ) ]  
                              Datos  de  carácter  Unicode  de  longitud  fija,  con  n  caracteres.  n debe  estar  comprendido 
                              entre 1 y 4.000. El tamaño de almacenamiento es dos veces n bytes. 
Ntext           ntext  
                              Datos Unicode de longitud variable con una longitud máxima de 2^30 ‐ 1 (1.073.741.823) 
                              caracteres.  El  tamaño  del  almacenamiento,  en  bytes,  es  dos  veces  el  número  de 
                              caracteres especificado. 
Nvarchar        nvarchar [ ( n | Max ) ]  
                              Datos de carácter Unicode de longitud variable. n puede ser un valor comprendido entre 1 
                              y  4.000.  Max  indica  que  el  tamaño  máximo  de  almacenamiento  es  2^31‐1  bytes.  El 
                              tamaño de almacenamiento en bytes es dos veces el número de caracteres especificado + 
                              2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres.  
                                Tabla 3.5 Cadena de caracteres Unicode. 
                                                    
Tipo de dato                                                      Intervalo
Binary          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 tamaño de almacenamiento es de n bytes. 
                 
Image           Datos binarios de longitud variable desde 0 hasta 2^31‐1 (2.147.483.647) bytes. 
Varbinary       varbinary [ ( n | Max) ]  
                              Datos binarios de longitud variable. n puede ser un valor que oscila entre 1 y 8.000. Max 
                              indica  que  el  tamaño  máximo  de  almacenamiento  es  de  2^31‐1  bytes.  El  tamaño  de 
                              almacenamiento  es  la  longitud  real  de  los  datos  especificados  +  2  bytes.  Los  datos 
                              especificados pueden tener una longitud de 0 bytes.  
                                          Tabla 3.6 Cadenas binarias. 
                                       
Tipo de dato                                                    Intervalo
Cursor              Un  tipo  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. 
Hierarchyid         El  tipo  de  datos  del  sistema  de  hierarchyid  es  de  longitud  variable.  Use  hierarchyid  para 
                    representar  la  posición  en  una  jerarquía.  Una  columna  de  tipo  hierarchyid  no  representa 
                    automáticamente un árbol. Dependerá de la aplicación generar y asignar los valores hierarchyid 
                    de tal forma que la relación deseada entre las filas se refleje en los valores. 
Sql variant         Tipo  de  datos  que  almacena  valores  de  varios  tipos  de  datos  admitidos  en  SQL  Server.  Puede 
                    tener una longitud máxima de 8.016 bytes. Esto incluye la información y el valor de tipo base. La 
                    longitud máxima del tipo base real es 8.000 bytes. 
                    Este  no  puede  almacenar  valores  del  tipo:  varchar  (Max),  nvarchar  (Max),  text,  image,  Sql 
                    variant,  hierarchyid,  varbinary  (Max),  XML,  ntext,  Timestamp,  geography,  geometry  y  tipos  de 
                    datos definidos por el usuario. 
Table               Es 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. 
                     
Timestamp           timestamp es el sinónimo del tipo de datos rowversion y está sujeto al comportamiento de los 
                    sinónimos de tipos de datos. En las instrucciones DDL, utilice rowversion en lugar de timestamp 
                    siempre que sea posible. 
                    Es  un  tipo  de  datos  que  expone  números  binarios  únicos  generados  automáticamente  en  una 
                    base de datos. rowversion suele utilizarse como mecanismo para marcar la versión de las filas de 
                    la tabla. El tamaño de almacenamiento es de 8 bytes. El tipo de datos rowversion es simplemente 
                    un número que se incrementa y no conserva una fecha o una hora. 
Uniqueidentifier    Es un GUID de 16 bytes.  
                    Una  columna  o  una  variable  local  de  tipo  de  datos  uniqueidentifier  se  puede  inicializar  en  un 
                    valor de las siguiente formas:  
                      • Mediante la función NEWID. 
                      • Mediante la conversión a partir de una constante de cadena con el formato xxxxxxxx‐xxxx‐
                           xxxx‐xxxx‐xxxxxxxxxxxx, donde cada x es un dígito hexadecimal en el intervalo 0‐9 o a‐f. Por 
                           ejemplo, 6F9619FF‐8B86‐D011‐B42D‐00C04FC964FF es un valor uniqueidentifier válido. 
                    Con los valores uniqueidentifier se pueden utilizar operadores de comparación. No obstante, no 
                    se implementa la ordenación mediante la comparación 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 aritméticos. Con el tipo de datos uniqueidentifier, se pueden utilizar todas las 
                    propiedades y restricciones de columna, excepto IDENTITY. 
                    La  replicación  de  mezcla  y  transaccional  con  suscripciones  de  actualización  utiliza  columnas 
                    uniqueidentifier para garantizar que las filas se identifican de forma exclusiva en varias copias de 
                    la tabla. 
                     
XML                 Es  el  tipo  de  datos  que  almacena  datos  de  XML.  Puede  almacenar  instancias  de  XML  en  una 
                    columna o una variable de tipo XML. Para obtener más información 
                                       Tabla 3.7 Otros tipos de datos. 
                                       
Operadores Comunes                              Descripción
        +              Adición 
        ‐              Sustracción 
        *              Multiplicación
        /              División 
        %              Regresa el restante entero de una división (Operador de 
                       Módulo)  
        =              Igual a, asignar valor
        >              Mayor que
        <              Menor que
        >=             Mayor o igual que
        <=             Menor o igual que
        <>             No igual que
        !=             No igual a
        !<             No menor o igual que
        !>             No mayor que
       AND             Verdadero cuando ambas condiciones se cumplen 
       NOT             Invierte el valor de cualquier operador Booleano 
        OR             Verdadero si alguna condición es verdadera 
       LIKE            Comprueba si una cadena de caracteres coincide con un 
                       patrón determinado 

                Tabla 3.8 Operadores más comunes. 

Los tipos de datos de sql server

  • 1.
    Los tipos de datos de SQL Server se organizan en las siguientes categorías:  Números exactos  Números aproximados  Fecha y hora  Cadena de caracteres  Cadenas de caracteres Unicode  Cadenas binarias  Otros tipos de datos  En SQL Server, según las características de almacenamiento, algunos tipos de datos  están 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.     
  • 2.
    Tipo de dato  Intervalo Almacenamiento  Bigint  De ‐2^63 (‐9.223.372.036.854.775.808) a 2^63‐1 (9.223.372.036.854.775.807)  8 bytes  Bit  Tipo de datos entero que puede aceptar los valores 1, 0 o NULL.    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.  Decimal  decimal [(p, [(s)])] Cuando se utiliza la precisión máxima, los valores válidos se    sitúan entre ‐ 10^38 +1 y 10^38 ‐ 1.    p (precisión)   El número total máximo 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.  s (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; por lo  tanto, 0 <= s <= p. Los tamaños de almacenamiento máximo  varían, según la precisión.  Precisión  Bytes de  almacenamiento  1 ‐ 9  5  10‐19  9  20‐28  13    29‐38  17  Int  De ‐2^31 (‐2.147.483.648) a 2^31‐1 (2.147.483.647)  4 bytes  Money  De ‐922,337,203,685.477,5808 a 922,337,203,685.477,5807  8 bytes  Numeric  Se emplea al igual que el tipo decimal. Numeric[(p, s)]    Smallint  De ‐2^15 (‐32.768) a 2^15‐1 (32.767)  2 bytes  Smallmoney  De ‐ 214.748,3648 a 214.748,3647  4 bytes  Tinyint  De 0 a 255  1 byte  Tabla 3.1 Numéricos exactos.     
  • 3.
    Tipo de dato  Intervalo Almacenamiento Float  De – 1,79E+308 a ‐2,23E‐308, 0 y de 2,23E‐308 a 1,79E+308  Depende de n.    float [ ( n ) ]   Donde n es el número de bits que se utilizan para almacenar la  mantisa del número float en notación científica y, por tanto,  dicta su precisión y el tamaño de almacenamiento. Si se  especifica n, debe ser un valor entre 1 y 53. El valor  predeterminado de n es 53.  Valor de n  Precisión Tamaño de almacenamiento 1‐24  7 dígitos 4 bytes 25‐53  15 dígitos 8 bytes     Real  De – 3,40E + 38 a ‐1,18E – 38, 0 y de 1,18E – 38 a 3,40E + 38  4 Bytes  Tabla 3.2 Numéricos aproximados.    Tipo de dato Salida Date  2007‐05‐08  Datetime  2007‐05‐08 12:35:29.123  Datetime2  2007‐05‐08 12:35:29. 1234567  Datetimeoffset 2007‐05‐08 12:35:29.1234567 +12:15  Smalldatetime 2007‐05‐08 12:35:00  Time  12:35:29. 1234567  Tabla 3.3 Fecha y hora.  Tipo de dato  Intervalo  Char  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 tamaño de almacenamiento es n bytes.   Text  text   Datos  no  Unicode  de  longitud  variable  de  la  página  de  códigos  del  servidor  y  con  una  longitud máxima de 2^31‐1 (2.147.483.647) caracteres. Cuando la página de códigos 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.  Varchar  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  tamaño  de  almacenamiento  máximo  es  de  2^31‐1  bytes.  El  tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los  datos especificados pueden tener una longitud de 0 caracteres.   Tabla 3.4 Cadenas de caracteres.     
  • 4.
    Tipo de dato  Intervalo Nchar  nchar [ ( n ) ]   Datos  de  carácter  Unicode  de  longitud  fija,  con  n  caracteres.  n debe  estar  comprendido  entre 1 y 4.000. El tamaño de almacenamiento es dos veces n bytes.  Ntext  ntext   Datos Unicode de longitud variable con una longitud máxima de 2^30 ‐ 1 (1.073.741.823)  caracteres.  El  tamaño  del  almacenamiento,  en  bytes,  es  dos  veces  el  número  de  caracteres especificado.  Nvarchar  nvarchar [ ( n | Max ) ]   Datos de carácter Unicode de longitud variable. n puede ser un valor comprendido entre 1  y  4.000.  Max  indica  que  el  tamaño  máximo  de  almacenamiento  es  2^31‐1  bytes.  El  tamaño de almacenamiento en bytes es dos veces el número de caracteres especificado +  2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres.   Tabla 3.5 Cadena de caracteres Unicode.    Tipo de dato  Intervalo Binary  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 tamaño de almacenamiento es de n bytes.    Image  Datos binarios de longitud variable desde 0 hasta 2^31‐1 (2.147.483.647) bytes.  Varbinary  varbinary [ ( n | Max) ]   Datos binarios de longitud variable. n puede ser un valor que oscila entre 1 y 8.000. Max  indica  que  el  tamaño  máximo  de  almacenamiento  es  de  2^31‐1  bytes.  El  tamaño  de  almacenamiento  es  la  longitud  real  de  los  datos  especificados  +  2  bytes.  Los  datos  especificados pueden tener una longitud de 0 bytes.   Tabla 3.6 Cadenas binarias.     
  • 5.
    Tipo de dato  Intervalo Cursor  Un  tipo  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.  Hierarchyid  El  tipo  de  datos  del  sistema  de  hierarchyid  es  de  longitud  variable.  Use  hierarchyid  para  representar  la  posición  en  una  jerarquía.  Una  columna  de  tipo  hierarchyid  no  representa  automáticamente un árbol. Dependerá de la aplicación generar y asignar los valores hierarchyid  de tal forma que la relación deseada entre las filas se refleje en los valores.  Sql variant  Tipo  de  datos  que  almacena  valores  de  varios  tipos  de  datos  admitidos  en  SQL  Server.  Puede  tener una longitud máxima de 8.016 bytes. Esto incluye la información y el valor de tipo base. La  longitud máxima del tipo base real es 8.000 bytes.  Este  no  puede  almacenar  valores  del  tipo:  varchar  (Max),  nvarchar  (Max),  text,  image,  Sql  variant,  hierarchyid,  varbinary  (Max),  XML,  ntext,  Timestamp,  geography,  geometry  y  tipos  de  datos definidos por el usuario.  Table  Es 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.    Timestamp  timestamp es el sinónimo del tipo de datos rowversion y está sujeto al comportamiento de los  sinónimos de tipos de datos. En las instrucciones DDL, utilice rowversion en lugar de timestamp  siempre que sea posible.  Es  un  tipo  de  datos  que  expone  números  binarios  únicos  generados  automáticamente  en  una  base de datos. rowversion suele utilizarse como mecanismo para marcar la versión de las filas de  la tabla. El tamaño de almacenamiento es de 8 bytes. El tipo de datos rowversion es simplemente  un número que se incrementa y no conserva una fecha o una hora.  Uniqueidentifier  Es un GUID de 16 bytes.   Una  columna  o  una  variable  local  de  tipo  de  datos  uniqueidentifier  se  puede  inicializar  en  un  valor de las siguiente formas:   • Mediante la función NEWID.  • Mediante la conversión a partir de una constante de cadena con el formato xxxxxxxx‐xxxx‐ xxxx‐xxxx‐xxxxxxxxxxxx, donde cada x es un dígito hexadecimal en el intervalo 0‐9 o a‐f. Por  ejemplo, 6F9619FF‐8B86‐D011‐B42D‐00C04FC964FF es un valor uniqueidentifier válido.  Con los valores uniqueidentifier se pueden utilizar operadores de comparación. No obstante, no  se implementa la ordenación mediante la comparación 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 aritméticos. Con el tipo de datos uniqueidentifier, se pueden utilizar todas las  propiedades y restricciones de columna, excepto IDENTITY.  La  replicación  de  mezcla  y  transaccional  con  suscripciones  de  actualización  utiliza  columnas  uniqueidentifier para garantizar que las filas se identifican de forma exclusiva en varias copias de  la tabla.    XML  Es  el  tipo  de  datos  que  almacena  datos  de  XML.  Puede  almacenar  instancias  de  XML  en  una  columna o una variable de tipo XML. Para obtener más información  Tabla 3.7 Otros tipos de datos.     
  • 6.
    Operadores Comunes  Descripción +  Adición  ‐  Sustracción  *  Multiplicación /  División  %  Regresa el restante entero de una división (Operador de  Módulo)   =  Igual a, asignar valor >  Mayor que <  Menor que >=  Mayor o igual que <=  Menor o igual que <>  No igual que !=  No igual a !<  No menor o igual que !>  No mayor que AND  Verdadero cuando ambas condiciones se cumplen  NOT  Invierte el valor de cualquier operador Booleano  OR  Verdadero si alguna condición es verdadera  LIKE  Comprueba si una cadena de caracteres coincide con un  patrón determinado  Tabla 3.8 Operadores más comunes.