1. INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO
PRIVADO BENJAMÍN FRANKLIN
SQL SERVER 2008
NOMBRE:
ELIZABETH HUARAYA APAZA
TRABAJO:
TIPOS DE DATOS DE SQL SERVER 2008
MATERIA:
BASE DE DATOS
PROFESOR:
FRANKLIN CCAPA
CARRERA:
COMPUTO E INFORMÁTICA
SEMESTRE:
“V”
2013
2. SQL SERVER 2008
CATEGORÍA TIPO DE DATO
Binary
Binary
Varbinary
Image
Character
Char
Varchar
Text
Date time
Datetime
Smalldatetime
Decimal
Decimal
Numeric
Floatingpoint
Float
Real
Integer
Bigint
Int
Smallint
Tinyint
Monetary
Money
Smallmoney
Special
Bit
Cursor
Timestamp
Uniqueidentifier
SQL_variant
Table
Unicode
Nchar
Nvarchar
Ntext
3. TIPO DE DATOS
SQL_VARIANT:
Tipo de datos que almacena valores de varios tipos de datos admitidos en SQL Server.
sql_variant
Sql_variant puede utilizarse en columnas, parámetros, 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, puede almacenar valores int, binary y char.
Los tipos de valores que no se pueden almacenar mediante sql_variant son:
VALORES NO ALMACENADOS
varchar(max) varbinary(max)
nvarchar(max) Xml
Text Ntext
Image Timestamp
sql_variant Geography
Hierarchyid Geometry
Sql_variant 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.
El tipo de datos sql_variant pertenece a la parte superior de la lista de jerarquías de
tipos de datos para conversión. En las comparaciones de sql_variant, el orden de la
jerarquía del tipo de datos SQL Server se agrupa en familias de tipos de datos.
JERARQUÍA DE
TIPO DE DATOS
FAMILIA DE TIPO
DE DATOS
sql_variant sql_variant
datetime2 fecha y hora
Datetimeoffset Fecha y hora
Datetime fecha y hora
Smalldatetime fecha y hora
Date fecha y hora
Time fecha y hora
Float
Valores numéricos
aproximados
Real
Valores numéricos
aproximados
Decimal Valor numérico exacto
Money Valor numérico exacto
Smallmoney Valor numérico exacto
Bigint Valor numérico exacto
4. Int Valor numérico exacto
Smallint Valor numérico exacto
Tinyint Valor numérico exacto
Bit Valor numérico exacto
Nvarchar Unicode
Nchar Unicode
Varchar Unicode
Char Unicode
Varbinary Binario
Binary Binario
Uniqueidentifier Uniqueidentifier
INT, BIGINT, SMALLINT Y TINYINT
Son tipos de datos numéricos exactos que utilizan datos enteros.
TIPO DE
DATOS
INTERVALO
ALMACENAMI
ENTO
Bigint
De -2^63 (-9.223.372.036.854.775.808) a 2^63-1
(9.223.372.036.854.775.807)
8 bytes
Int
De -2^31 (-2.147.483.648) a 2^31-1
(2.147.483.647)
4 bytes
Smallint De -2^15 (-32.768) a 2^15-1 (32.767) 2 bytes
Tinyint De 0 a 255 1 byte
INT: Es el principal tipo de datos de valores enteros de SQL Server.
BIGINT: Esta se usa cuando los valores enteros pueden exceder el intervalo
admitido por el tipo de dato INT.
CURSO:
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.
Las operaciones a las que pueden hacer referencia las variables y parámetros 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 parámetros de resultado de procedimientos almacenados.
La función CURSOR_STATUS.
Los procedimientos almacenados del sistema sp_cursor_list, sp_describe_cursor,
sp_describe_cursor_tables y sp_describe_cursor_columns.
5. DECIMAL Y NUMERIC
Tipos de datos numéricos que tienen precisión y escala fijas.
DECIMAL [ (p[ ,s] )]y NUMERIC [ (p[ ,s] )]
P = (precisión)
S = (escala)
Cuando se utiliza la precisión máxima, los valores válidos se sitúan entre - 10^38 +1 y
10^38 - 1. Los sinónimos de ISO para decimal son de tipo dec y dec(p, s). numeric es
funcionalmente equivalente a decimal.
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, puede ser a:
La precisión debe ser un valor comprendido entre 1 y la precisión máxima de 38.
La precisión predeterminada es 18.
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
MONEY Y SMALLMONEY:
Tipos de datos que representan valores monetarios o de moneda.
TIPO DE
DATOS
INTERVALO ALMACENAMIENTO
Money
De -922,337,203,685.477,5808 a
922,337,203,685.477,5807
8 bytes
Smallmoney De - 214.748,3648 a 214.748,3647 4 bytes
Los tipos de datos money y smallmoney tienen una precisión de una diezmilésima de
las unidades monetarias que representan.
FLOAT Y REAL
Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de coma
flotante. Los datos de coma flotante son aproximados, no todos los valores del intervalo
del tipo de datos se pueden representar con exactitud.
6. TIPO DE
DATOS
INTERVALO ALMACENAMIENTO
Float
De - 1,79E+308 a -2,23E-308, 0 y de 2,23E-308
a 1,79E+308
Depende del valor de
n.
Real
De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E - 38
a 3,40E + 38
4 Bytes
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 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.
NVALUE PRECISIÓN TAMAÑO DE ALMACENAMIENTO
1-24 7 dígitos 4 bytes
25-53 15 dígitos 8 bytes
BINARY Y VARBINARY
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 tamaño 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 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.
Cuando no se especifica el argumento n con la función CAST, la longitud predeterminada
es 30.
Utilice binary cuando los tamaños de las entradas de datos de columna sean
coherentes.
Utilice varbinary cuando los tamaños de las entradas de datos de columna
varíen considerablemente.
Utilice varbinary(max) cuando las entradas de datos de columna superen los
8.000 bytes.
NCHAR Y NVARCHAR
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 ) ]
7. 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.
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.
Cuando no se especifica el argumento n en la función CAST, la longitud
predeterminada es 30.
Use ncharcuando sea probable que el tamaño de las entradas de datos de las
columnas sea similar.
Use nvarcharcuando sea probable que el tamaño de las entradas de datos de las
columnas varíe.
ROWVERSION:
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. Para
registrar una fecha o una hora se usa un tipo de datos datetime2.
Cada base de datos tiene un contador que se incrementa por cada operación de
inserción o actualización que se lleva a cabo en una tabla que contiene una columna
rowversion en la base de datos.
Timestamp es el sinónimo del tipo de datos rowversion y está sujeto al
comportamiento de los sinónimos de tipos de datos.
En una instrucción CREATETABLE o ALTER TABLE, no tiene que especificar ningún
nombre de columna para el tipo de datos timestamp.
Si no especifica un nombre de columna, el SQL Server Database Engine (Motor de base
de datos de SQL Server) genera el nombre de columna timestamp. Cuando utiliza
rowversion, debe especificar un nombre de columna.
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.
Para declarar variables de tipo table, utilice DECLARE @local_variable
TABLE_TYPE_DEFINITION
Es el mismo subconjunto de información que se utiliza para definir una tabla en
CREATETABLE. La declaración de tabla incluye definiciones de columna, nombres,
8. tipos de datos y restricciones. Sólo se permiten los tipos de restricciones PRIMARY
KEY, UNIQUE KEY y NULL.
COLLATION_DEFINITION
Si no se especifica collation_definition, la columna hereda la intercalación de la base
de datos actual. Si la columna se ha definido como un tipo definido por el usuario
CLR (CommonLanguageRuntime), la columna hereda la intercalación del tipo
definido por el usuario.
Las variables table ofrecen las siguientes ventajas:
Una variable table se comporta como una variable local. Tiene un ámbito bien
definido. Dentro de su ámbito, la variable table se puede utilizar como una tabla
normal. Puede aplicarse en cualquier lugar de las instrucciones SELECT, INSERT,
UPDATE y DELETE donde se utilice una tabla o expresión de tabla.
Las variables table se limpian automáticamente al final de la función, procedimiento
almacenado o lote en que están definidas.
Las restricciones CHECK, los valores DEFAULT y las columnas calculadas de la
declaración del tipo table no pueden llamar a funciones definidas por el usuario.
Las variables table que se utilizan en procedimientos almacenados dan lugar a
menos recompilaciones de los procedimientos almacenados que cuando se utilizan
tablas temporales.
Las transacciones con variables table existen sólo mientras dura una actualización
en la variable table, que requieren menos recursos de registro y bloqueo.
BIT:
Tipo de datos entero que puede aceptar los valores 1, 0 o NULL.
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.
DATETIME
Define una fecha que se combina con una hora del día con fracciones de segundos
basada en un reloj de 24 horas.
PROPIEDAD VALOR
Sintaxis Datetime
Uso
DECLARE @MyDatetimedatetime
CREATE TABLE Table1 ( Column1 datetime )
Formatos de literal de cadena
predeterminados(se usan para el
cliente de nivel inferior)
No aplicable
Intervalo de fechas
Del 1 de enero de 1753 hasta el 31 de
diciembre de 9999
9. Intervalo de horas De 00:00:00 a 23:59:59.997
Intervalo de desplazamiento de zona
horaria
Ninguno
Intervalos de elementos
AAAA es una cifra de cuatro dígitos
comprendida entre 1753 y 9999 que
representa un año.
MM es una cifra de dos dígitos comprendida
entre 01 y 12 que representa un mes del año
especificado.
DD es una cifra de dos dígitos comprendida
entre 01 y 31 dependiendo del mes, que
representa un día del mes especificado.
hh es una cifra de dos dígitos comprendida
entre 00 y 23 que representa la hora.
mm es una cifra de dos dígitos comprendida
entre 00 y 59 que representa los minutos.
s es una cifra de dos dígitos comprendida
entre 00 y 59 que representa los segundos.
n* es una cifra de cero a tres dígitos
comprendida entre 0 y 999 que representa las
fracciones de segundos.
Longitud de los caracteres
19 posiciones como mínimo a 23 como
máximo
Tamaño de almacenamiento 8 bytes
Precisión
Se redondea en incrementos de 0,000, 0,003
o 0.007 segundos
Valor predeterminado 1900-01-01 00:00:00
Calendario
Gregoriano (no incluye el intervalo completo
de años.)
Precisión de fracciones de segundo
definida por el usuario
No
Conservación y reconocimiento del
desplazamiento de la zona horaria
No
Reconocimiento del horario de
verano
No
Formato de lineamiento compatible para datetime
NUMÉRICO DESCRIPCIÓN
FORMATOS DE
FECHA:
[0]4/15/[19]96 -- (mda)
Puede especificar datos de fecha con un mes en forma de
número. Por ejemplo, 5/20/97 representa el veinte de mayo
de 1997. Cuando use un formato numérico de fecha,
especifique el mes, el día y el año en una cadena con barras
10. [0]4-15-[19]96 -- (mda)
[0]4.15.[19]96 -- (mda)
[0]4/[19]96/15 -- (mad)
15/[0]4/[19]96 -- (dma)
15/[19]96/[0]4 -- (dam)
[19]96/15/[0]4 -- (adm)
[19]96/[0]4/15 -- (amd)
FORMATOS DE
HORA:
14:30
14:30[:20:999]
14:30[:20.9]
4am
4 PM
diagonales (/), guiones (-) o puntos (.) como separadores.
Esta cadena debe aparecer de la forma siguiente:
número separador número separador número [hora]
[hora]
Cuando el idioma establecido es us_english, el orden
predeterminado de la fecha es mdy (mes, día, año). Para
cambiar el orden de la fecha, utilice la instrucción SET
DATEFORMAT.
La configuración de SET DATEFORMAT determina cómo se
interpretan los valores de fecha. Si el orden no coincide con
esta configuración, los valores no se interpretarán como
fechas porque se encuentran fuera del intervalo, o bien se
interpretarán incorrectamente.
ALFABÉTICO DESCRIPCIÓN
Abr[il] [15][,] 1996
Abr[il] 15[,] [19]96
Abr[il] 1996 [15]
[15] Abr[il][,] 1996
15 Abr[il][,][19]96
15 [19]96 abr[il]
[15] 1996 abr[il]
1996 ABR[IL] [15]
1996 [15] ABR[IL]
Puede especificar los datos de la fecha con un mes
especificado como el nombre completo del mes.
Éstas son algunas directrices para utilizar los formatos
alfabéticos de fecha:
Incluya los datos de fecha y hora entre comillas simples
('). Para los idiomas distintos de inglés, utilice N'
Los caracteres que se incluyen entre corchetes son
opcionales.
Si sólo especifica los dos últimos dígitos del año, los
valores inferiores a los dos últimos dígitos del valor de la
opción de configuración Fecha límite de año de dos
dígitos pertenecen al mismo siglo que el año límite. Los
valores mayores o iguales que el valor de esta opción
pertenecen al siglo anterior al año límite.
Si falta el día, se usará el primer día del mes.
El parámetro de sesión SET DATEFORMAT no se aplica
cuando se especifica el mes de forma alfabética.
11. ISO 8601 Descripción
AAAA-MM-DDThh:mm:ss[.mmm]
AAAAMMDDThh:mm:ss[.mmm]
Para utilizar el formato ISO 8601, debe especificar
todos los elementos del formato. Esto también
incluye T, los dos puntos (:) y el punto (.) que se
muestran en el formato.
Los corchetes indican que el componente de
fracción de segundo es opcional. El componente
de hora se especifica en el formato de 24 horas.
La T indica el inicio de la parte de hora del valor
datetime.
La ventaja de utilizar el formato ISO 8601 es que
se trata de un estándar internacional con una
especificación que evita ambigüedades. Asimismo,
este formato no se ve afectado por los parámetros
SET DATEFORMAT o SET LANGUAGE.
ODBC DESCRIPCIÓN
{ ts '1998-05-02 01:23:56.123' }
{ d '1990-10-02' }
{ t '13:33:41' }
La API de ODBC define secuencias de escape para
representar valores de fecha y de hora que ODBC
llama datos de marca de tiempo. Las aplicaciones que
usan las API basadas en ODBC, OLE DB y ADO
pueden usar este formato de marca de tiempo de
ODBC para representar fechas y horas.
Las secuencias de escape de marca de hora de
ODBC tienen el formato: { literal_type 'constant_value'
}:
literal_type especifica el tipo de la secuencia de
escape. Las marcas de hora tienen tres
especificadores literal_type:
o d = sólo fecha
o t = sólo hora
o ts = marca de hora (hora + fecha)
'constant_value' es el valor de la secuencia de
escape. constant_value debe seguir estos
formatos para cada literal_type.
literal_typeformatoconstant_value
d aaaa-mm-dd
t hh:mm:ss[.fff]
tsaaaa-mm-ddhh:mm:ss[.fff]
12. Los valores datetime se redondean con incrementos de 0,000; 0,003 o 0,007 segundos,
como:
VALOR
ESPECIFICADO POR
EL USUARIO
VALOR ALMACENADO
POR EL SISTEMA
01/01/98 23:59:59.999 1998-01-02 00:00:00.000
01/01/98 23:59:59.995
01/01/98 23:59:59.996
01/01/98 23:59:59.997
01/01/98 23:59:59.998
1998-01-01 23:59:59.997
01/01/98 23:59:59.992
01/01/98 23:59:59.993
01/01/98 23:59:59.994
1998-01-01 23:59:59.993
01/01/98 23:59:59.990
01/01/98 23:59:59.991
1998-01-01 23:59:59.990
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.
Los valores de hierarchyid tienen las siguientes propiedades.
MUY COMPACTOS
El número medio de bits necesarios para representar un nodo en un árbol con n
nodos depende del promedio de nodos secundarios. Para multiplicadores de salida
pequeños (0-7), el tamaño es aproximadamente 6*logAn bits, donde A es el
promedio de nodos secundarios. Un nodo en una jerarquía 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 COMPARACIÓN SE REALIZA CON PRIORIDAD A LA PROFUNDIDAD
Dados dos valores hierarchyid a y b, a<b que viene antes que b en un corte
transversal de prioridad a la profundidad del árbol. Los índices de los tipos de datos
hierarchyid están 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.
13. COMPATIBILIDAD CON INSERCIONES Y ELIMINACIONES ARBITRARIAS
Con el método 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 número arbitrario de nodos de
la jerarquía.
La codificación 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 representación como para caber en los 892 bytes.
NTEXT, TEXT E IMAGE:
Tipos de datos de longitud fija y variable para almacenar valores de gran tamaño 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 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.
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.
IMAGE:
Datos binarios de longitud variable desde 0 hasta 2^31-1 (2.147.483.647) bytes.
Funciones e instrucciones que se pueden utilizar con datos de tipo text, ntext o imagen
son:
FUNCIONES INSTRUCCIONES
DATALENGTH (Transact-SQL) READTEXT (Transact-SQL)
PATINDEX (Transact-SQL) SET TEXTSIZE (Transact-SQL)
SUBSTRING (Transact-SQL) UPDATETEXT (Transact-SQL)
TEXTPTR (Transact-SQL) WRITETEXT (Transact-SQL)
TEXTVALID (Transact-SQL)