Unidad 8. Avanzado: Tipos de datos: precisión, escala, longitud y prioridad (II)


Sinónimos de tipos de datos (Transact-SQL)

Los sinónimos de tipos de datos se incluyen en SQL Server 2005 por compatibilidad con SQL-92. En la siguiente tabla se incluyen los sinónimos y los tipos de datos de sistema de SQL Server a los que se asignan.

Sinónimo Tipo de datos de sistema de SQL Server
Binary varying varbinary
char varying varchar
character char
character char(1)
character(n) char(n)
character varying(n) varchar(n)
Dec decimal
Double precision float
float[(n)] para n = 1-7 real
float[(n)] para n = 8-15 float
integer int
national character(n) nchar(n)
national char(n) nchar(n)
national character varying(n) nvarchar(n)
national char varying(n) nvarchar(n)
national text ntext
rowversion timestamp

Los sinónimos de tipos de datos pueden utilizarse en lugar del nombre del tipo de datos base correspondiente en las instrucciones del lenguaje de definición de datos (DDL), como CREATE TABLE, CREATE PROCEDURE o DECLARE @variable. Sin embargo, los sinónimos no tienen visibilidad después de crear el objeto. Una vez creado el objeto, se le asigna el tipo de datos base asociado al sinónimo. No hay ningún registro de que el sinónimo se haya especificado en la instrucción que ha creado el objeto.
A todos los objetos que proceden del objeto original, como las columnas del conjunto de resultados o las expresiones, se les asigna el tipo de datos base. Todas las funciones de metadatos subsiguientes ejecutadas en el objeto original y cualquier objeto derivado informarán del tipo de datos base y no del sinónimo. Este comportamiento se produce con las operaciones de metadatos como sp_help y otros procedimientos almacenados del sistema, las vistas del esquema de información o las diferentes operaciones de metadatos de la API de acceso a datos que informan de los tipos de datos de las columnas de tablas o conjuntos de resultados.
Por ejemplo, puede crear una tabla si especifica national character varying:

CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, VarCharCol national  character varying(10))

VarCharCol se asigna a un tipo de datos nvarchar(10) y todas las funciones de metadatos posteriores informan de la columna como columna nvarchar(10). Las funciones de metadatos nunca informarán de ellos como columna national character varying(10).

Precisión, escala y longitud (Transact-SQL)

La precisión es el número de dígitos de un número. La escala es el número de dígitos situados a la derecha de la coma decimal de un número. Por ejemplo, el número 123,45 tiene una precisión de 5 y una escala de 2.
En SQL Server 2005, la precisión máxima predeterminada de los tipos de datos numeric y decimal es 38. En versiones anteriores de SQL Server, el valor predeterminado máximo es 28.
La longitud de un tipo de datos numérico es el número de bytes utilizados para almacenar el número. La longitud para una cadena de caracteres o tipo de datos Unicode es el número de caracteres. La longitud para los tipos de datos binary, varbinary y image es el número de bytes. Por ejemplo, un tipo de datos int que puede contener 10 dígitos se almacena en 4 bytes y no acepta coma decimal. El tipo de datos int tiene una precisión de 10, una longitud de 4 y una escala de 0.
Cuando se concatenan dos expresiones char, varchar, binary o varbinary, la longitud de la expresión resultante es la suma de las longitudes de las dos expresiones de origen u 8.000 caracteres, lo que sea menor.
Cuando se concatenan dos expresiones nchar o nvarchar, la longitud de la expresión resultante es la suma de las longitudes de las dos expresiones de origen o 4.000 caracteres, lo que sea menor.
Cuando se comparan dos expresiones del mismo tipo de datos pero de distintas longitudes mediante UNION, EXCEPT o INTERSECT, la longitud resultante es la longitud máxima de las dos expresiones.
La precisión y la escala de los tipos de datos numéricos, excepto decimal, son fijas. Si un operador aritmético tiene dos expresiones del mismo tipo, el resultado tiene el mismo tipo de datos con la precisión y la escala definidas para ese tipo de datos. Si un operador tiene dos expresiones con tipos de datos numéricos diferentes, las reglas de prioridad de tipos de datos definen el tipo de datos del resultado. El resultado tiene la precisión y la escala definidas para el tipo de datos que le corresponde.
Esta tabla define cómo se calculan la precisión y la escala del resultado de la operación cuando éste es de tipo decimal. El resultado es decimal cuando se cumple alguna de las siguientes condiciones:
Ambas expresiones son de tipo decimal.
Una expresión es decimal y la otra es de un tipo de datos con una prioridad menor que decimal.
Las expresiones de operando se denotan como expresión e1, con precisión p1 y escala s1, y expresión e2, con precisión p2 y escala s2. La precisión y la escala de cualquier expresión que no sea decimal es la precisión y la escala definidas para el tipo de datos de la expresión.

Operación Precisión del resultado Escala del resultado *
e1 + e2 máx(s1, s2) + máx(p1-s1, p2-s2) + 1 máx(s1, s2)
e1 - e2 máx(s1, s2) + máx(p1-s1, p2-s2) + 1 máx(s1, s2)
e1 * e2 p1 + p2 + 1 s1 + s2
e1 / e2 p1 - s1 + s2 + máx(6, s1 + p2 + 1) máx(6, s1 + p2 + 1)
e1 { UNION | EXCEPT | INTERSECT } e2 máx(s1, s2) + máx(p1-s1, p2-s2) máx(s1, s2)

* La precisión y la escala del resultado tienen un valor máximo absoluto igual a 38. Cuando la precisión de un resultado es mayor que 38, la escala correspondiente se reduce para evitar que la parte entera del resultado se trunque.

Atrás  Inicio  Adelante





Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies


© aulaClic S.L. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.