en SQL, las columnas de una tabla se definen para almacenar un tipo específico de valor, como números, fechas o texto; estos se denominan tipos de datos. Con más de treinta tipos de tipos de datos de SQL server para elegir, los tipos de datos pueden parecer intimidantes, pero en realidad, solo hay unos pocos que se usan comúnmente en las bases de datos.
una vez que entiendes los tipos de datos en general, no es un tema complicado. También llegará a entender por qué hay una necesidad de tipos de datos y la razón por la que hay tantas variedades.,
en este artículo vamos a repasar los tipos de datos más comunes y las mejores prácticas para su uso.
Todos los ejemplos de esta lección se basan en Microsoft SQL Server Management Studio y la base de datos AdventureWorks2012. Comience a usar estas herramientas gratuitas con my guide Getting Started Using SQL Server.
¿qué son los tipos de datos de SQL Server?
antes de entrar en los tipos de datos utilizados en SQL server, creo que es importante que todos entiendan qué es un tipo de datos y por qué son necesarios para su uso en computadoras.
para nuestro ejemplo, hablaremos sobre una persona., Si estuviera pensando en la información que podría usar para describir a una persona, podría pensar que recopilaría su nombre, fecha de nacimiento, peso y número de Hijos. Para cada uno de estos atributos, los datos generalmente se dividen en varias categorías.
Los nombres se almacenan como texto, las fechas de nacimiento como fechas de calendario, y el peso como valores decimales, y un número de hijos como enteros. Cada una de estas categorías de valores es un tipo de datos.
cómo ayudan los tipos de datos
los tipos de datos definen las características de los datos que se pueden almacenar en una ubicación, como una columna de base de datos., Un tipo de datos define el posible conjunto de valores que se aceptan. Por ejemplo, un tipo de INT que significa entero en SQL server solo puede aceptar números enteros, no se permiten valores decimales.
Aquí hay una lista de algunas personas y sus edades
¿puede ver el problema con estas edades? Todos están en un formato inconsistente. No solo son difíciles de leer, sino que ordenar y calcular los datos es difícil., Mediante el uso de tipos de datos de SQL Server, que imponen el tipo esperado de datos que se almacenarán, podemos lograr un resultado mucho mejor. Aquí está la misma tabla con las edades mostradas como enteros
Cuando la edad se define como un entero, la expectativa es que los datos se ingresan como números enteros.
además, sin entrar en detalles técnicos, puede ver que almacenar la antigüedad como un entero ocupa mucho menos espacio que la antigüedad en la primera tabla., Esto puede no parecer una gran consideración con bases de datos pequeñas, pero cuando se trabaja con datos en teléfonos inteligentes o escenarios de «big data», estas consideraciones se suman.
una vez que el sistema entiende el tipo de datos, puede ordenar los datos en un orden que tenga sentido, así como realizar cálculos.
razones para usar los tipos de datos de SQL Server
Aquí hay algunas razones por las que los tipos de datos son importantes:
- Los datos se almacenan en un formato consistente y conocido.
- Conocer el tipo de datos le permite saber qué cálculos y formulaciones puede usar en la columna.,
- Los tipos de datos afectan al almacenamiento. Algunos valores ocupan más espacio cuando se almacenan en un tipo de datos frente a otro. Tomemos nuestras tablas de edades anteriores, por ejemplo.
- Los tipos de datos afectan al rendimiento. Cuanto menos tiempo tenga la base de datos para inferir valores o convertirlos, mejor. «Is December 32, 2015 a date?»
tipos de datos de SQL Server comúnmente utilizados
en SQL se define qué tipo de datos almacenar dentro de las columnas. Algunos ejemplos incluyen texto o datos numéricos.,
Este es el tipo de datos de la columna, y una de sus propiedades más importantes, ya que solo determina si un valor es válido para el almacenamiento en una columna.
hay más de treinta tipos de datos diferentes entre los que puede elegir al definir columnas, algunos tienen usos específicos, como almacenar imágenes.
en este artículo vamos a cubrir los siete tipos de datos que encontrará con más frecuencia en su uso diario de SQL., Estos son:
- INT
- VARCHAR, nvarchar
- DATETIME
- DECIMAL, FLOAT
- BIT
INT – Integer Data Type
el tipo de datos entero almacena números enteros. Los ejemplos incluyen -23, 0, 5 y 10045. Los números enteros no incluyen decimales. Dado que SQL server utiliza un número de palabras de computadora para representar un entero, hay valores máximos y mínimos que puede representar. Un tipo de datos INT puede almacenar un valor de -2,147,483,648 a 2,147,483,647.,
los usos prácticos del tipo de datos INT incluyen usarlo para contar valores, almacenar la edad de una persona o usarlo como clave de identificación para una tabla.
pero INT no sería tan bueno para realizar un seguimiento de un espacio de direcciones de disco duro terabyte, ya que el tipo de datos INT solo va a 2 mil millones y necesitaríamos rastrear los trillones. Para esto, podrías usar BIGINT.
el tipo de datos INT se usa dentro de los cálculos., Dado que DaysToManufacture se define como INT, podemos calcular fácilmente las horas multiplicándolo por 24:
Aquí puede ver los resultados
Hay muchas operaciones y funciones que se pueden utilizar con números enteros que vamos a cubrir en vez de profundizar en las funciones.,
VARCHAR y nvarchar – valores de texto
Use VARCHAR y nvarchar para almacenar valores de texto de longitud variable. «VARCHAR» significa carácter de longitud variable.
especifique el número de caracteres que se almacenarán en un VARCHAR o NVARCHAR a medida que se define la columna. Observe cómo se define el nombre para contener cincuenta caracteres:
lo que hace que VARCHAR sea popular es que los valores de menos de cincuenta caracteres ocupan menos espacio. El espacio se asigna según sea necesario., Esto difiere del tipo de datos CHAR que siempre asigna la longitud especificada, independientemente de la longitud de los datos reales almacenados.
el tipo de datos VARCHAR normalmente puede almacenar un máximo de 8.000 caracteres. Utilice el tipo de datos NVARCHAR para almacenar texto Unicode. Dado que los caracteres UNICODE ocupan el doble de espacio, las columnas NVARCHAR pueden almacenar un máximo de 4.000 caracteres.
la ventaja que tiene nvarchar sobre VARCHAR es que puede almacenar caracteres Unicode. Esto hace que sea útil almacenar conjuntos de caracteres extendidos como los utilizados para idiomas como Kanji.,
Las bases de datos diseñadas antes de SQL 2008 generalmente usan VARCHAR; sin embargo, las bases de datos más modernas o las de naturaleza global tienden a usar NVARCHAR.
DATETIME Fecha y Hora
Utilice el tipo de datos DATETIME para almacenar la fecha y la hora. Un ejemplo de un valor de DATATIME es
1968-10-23 1:45:37.123
Este es el valor del 23 de octubre de 1968 a la 1:45 AM. En realidad el tiempo es más preciso que eso. El tiempo es realmente 45 minutos, 37.123 segundos.
en muchos casos, solo necesita almacenar la fecha. En estos casos, el componente de tiempo se pone a cero., Por lo tanto, el 5 de noviembre de 1972 es
1972-11-05 00:00:00.000
un DATETIME puede almacenar fechas desde el 1 de enero de 1753 hasta el 31 de diciembre de 9999. Esto hace que el DATETIME sea bueno para registrar fechas en el mundo actual, pero no tanto en el de William Shakespeare.
a medida que se familiarice con las diversas funciones integradas de SQL, podrá manipular los datos. Para darle un vistazo, usaremos la función año para contar los empleados contratados cada año. Cuando se le da un valor DATETIME, la función YEAR devuelve el año.,
la consulta que usaremos es
el beneficio es que el tipo DATETIME asegura que los valores sean fechas válidas. Una vez que esto está asegurado, podemos usar una serie de funciones para calcular el número de días entre fechas, el mes de una fecha y así sucesivamente.
exploraremos estas diversas funciones en detalle en otro artículo de blog.
DECIMAL y coma flotante: los puntos decimales
utilizan tipos de datos decimales y coma flotante para trabajar con valores decimales como 10.3.,
agrupé DECIMAL y FLOTÉ en la misma categoría ya que ambos pueden manejar valores con puntos decimales; sin embargo, ambos lo hacen de manera diferente:
si necesita valores precisos, como cuando trabaja con datos financieros o contables, use DECIMAL. La razón es que el tipo de datos DECIMAL le permite definir el número de puntos decimales a mantener.
DECIMAL
los tipos de datos decimales se definen por precisión y escala. La precisión determina el número de dígitos totales a almacenar; mientras que, la escala determina el número de dígitos a la derecha del punto decimal.,
un tipo de datos DECIMAL se especifica como DECIMAL (precisión, escala).
un tipo de datos DECIMAL no puede tener más de 38 dígitos. La precisión y la escala debe cumplir la siguiente relación
0 <= scale <= precision <= 38 digits
En la Producción.Tabla de productos, el tipo de datos de la columna de peso se define como DECIMAL (8,2). El primer dígito es la precisión, el segundo la escala.
El peso se define para tener ocho dígitos totales, dos de ellos a la derecha del lugar decimal. Vamos a la siguiente consulta de ejemplo para ilustrar cómo este tipo de datos.,
FLOAT
donde los tipos de datos decimales son excelentes para números exactos, los flotadores son realmente buenos para valores numéricos largos. Aunque un valor DECIMAL puede tener un total de 38 dígitos, en muchas aplicaciones científicas y de ingeniería esto es inadecuado. FLOAT se eleva a la cima dentro de las aplicaciones científicas donde se encuentran valores numéricos extremos!
los flotadores tienen un rango de – 1.,79E+308 a 1,79 E + 308. Eso significa que el valor más grande puede ser 179 seguido de 306 ceros (¡grande de hecho!).
debido a la forma en que se almacenan los datos flotantes en la computadora (consulte la especificación de coma flotante IEEE 754), el número almacenado es una aproximación extremadamente cercana. Para muchas aplicaciones, esto es lo suficientemente bueno.
debido al comportamiento aproximado, evite usar los operadores <> y = en la cláusula WHERE. ¡Esta declaración ha quemado a may DBAs!
WHERE mass = 2.5
su expectativa es discontinua cuando se supone que la masa es igual a 2.,5, pero en realidad, en el ordenador, se almacena como 2.49999999999999999; por lo tanto, no es igual a 2.500000000000000!
esa es la naturaleza de los puntos flotantes y las computadoras. Usted y yo vemos 2.499999999999999 y creo que para fines prácticos es 2.5, pero para la computadora, estaban fuera solo un poco. J
BIT-valores booleanos o sí/No
hay momentos en los que solo necesita almacenar si algo «es» o «no es».»Por ejemplo, si un empleado está activo. Es en estos casos que el BIT datatype viene a su propio. Este tipo de datos es uno de tres estados: 1, 0 o NULL.,
el valor de 1 significa verdadero y 0 falso.
en esta consulta, estamos listando todos los títulos de trabajo de posición asalariada
podríamos también se han utilizado ‘True’ en lugar de 1. Aquí está el mismo ejemplo usando ‘True’