Trabajar con bases de datos de cualquier tipo significa trabajar con datos. Estos datos pueden tener un par de formatos predefinidos. A medida que avance en su aprendizaje con LearnSQL.es, empezará a entender los diferentes tipos de datos de SQL. En este artículo, cubriremos las diferentes variaciones del tipo de datos numérico de SQL, centrándonos en cómo declarar tipos de datos enteros.
Tipos de Datos Numéricos y Escalas
Las columnas numéricas almacenan números, pero es importante entender que "no todos los números son iguales". Hay diferentes tipos de números, y hay diferentes tipos de columnas numéricas. Cualquiera que tenga conocimientos de estadística sabe que hay cuatro escalas diferentes que se aplican a los números: nominal, ordinal, de intervalo y ratio. A diferencia de los otros tipos de datos, los tipos numéricos pueden representar todas estas escalas.
- Valores nominales: Solo se diferencian por su "nombre". No se tratan como números; no se pueden sumar ni restar, y no tienen un orden inherente. Por ejemplo, los números de ID de los estudiantes y los números de teléfono son valores nominales. Se utilizan más como una etiqueta que como un número. No podemos sumarlos para obtener un número de teléfono significativo.
- Valores ordinales: Proporcionan un orden o rango. En los valores ordinales, lo importante es el orden que existe entre ellos. Supongamos que tenemos una escala de 1 a 3 que califica el estado de ánimo de una persona. "1" significaría sentirse infeliz, "2" estar contento y "3" estar feliz. Se sabe que "feliz" tiene un valor más alto que "contento" o "infeliz", pero eso es todo. No se puede sumar "contento" e "infeliz" para obtener un "feliz".
- Valores de intervalo: Muestran las diferencias exactas. En una escala de intervalos, lo importante son las diferencias entre los valores. Los años, las fechas y la mayoría de las medidas de las personas son medidas de intervalo. Los valores de intervalo son numéricos y se representan como tales en la base de datos.
- Valores ratio: Son intervalos con un valor cero definido. Al igual que en las escalas de intervalo, en las escalas ratio las diferencias entre los valores son calculables. Sin embargo, en estas escalas, el valor cero significa que no hay nada que medir. Por ejemplo, si pensamos en términos de masa, longitud y duración, si cualquiera de ellas tiene un valor cero, no hay nada. Las escalas ratio son muy importantes para la ciencia.
Todos los tipos de datos numéricos de SQL se utilizan para representar todos los valores anteriores, especialmente los intervalos y los ratios. Se pueden comparar los valores de los caracteres en SQL, por lo que es posible argumentar que los valores de los caracteres también podrían representar datos de intervalo.
Declaración de Columnas con Tipos de Datos Enteros
La creación de tablas es el primer paso en todo proyecto de código SQL. Para ello, se utilizan instrucciones DDL (lenguaje de definición de datos) como CREATE y DROP. Cuando haya creado su tabla, empiece a declarar los nombres de las columnas y los tipos de datos en SQL. Los tipos de datos enteros (integer) contienen números enteros o sin punto decimal. En latín, integer significa entero.
Digamos que tenemos la tabla "usuarios". La información de cada usuario está en las columnas para el nombre y para el número de teléfono. Los nombres se almacenarían en una columna para caracteres, y los números de teléfono en una columna numérica.
Lea también: IVA 21% Excel
Tipos de Datos Enteros Exactos en SQL
Los tipos de datos numéricos exactos utilizan datos enteros. El estándar ANSI SQL define SMALLINT, INTEGER y BIGINT como tipos de datos enteros. Para ahorrar espacio en la base de datos, use el tipo de datos más pequeño que puede contener todos los valores posibles de manera confiable.
El tipo de datos int es el principal tipo de datos de valores enteros de SQL Server. Las funciones solo devuelven bigint si la expresión de parámetro es un tipo de datos bigint. Las constantes de enteros mayores que 2.147.483.647 se convierten en el tipo de datos decimal, no en el tipo de datos bigint.
En el ejemplo siguiente se crea una tabla con los tipos de datos bigint, int, smallint y tinyint.
Comparativa de Tipos de Datos Enteros
| Tipo de Datos | Descripción y Capacidad |
|---|---|
| tinyint | Suficiente para una pequeña tabla de búsqueda con valores de estado, ya que puede almacenar hasta 256 filas. |
| smallint | Tipo de dato entero definido por el estándar ANSI SQL. |
| int | Principal tipo de datos de valores enteros de SQL Server. Tipo de dato entero definido por el estándar ANSI SQL. |
| bigint | Tipo de dato entero definido por el estándar ANSI SQL. Las funciones solo devuelven bigint si la expresión de parámetro es un tipo de datos bigint. Maneja constantes de enteros mayores que 2.147.483.647 (de lo contrario se convertirían a decimal). |
Implicaciones del Redondeo en Columnas de Tipo Entero
Cuando se utilizan tipos de datos enteros en las columnas, es crucial entender cómo manejan los valores decimales. Las columnas INTEGER redondean los decimales. Si usted utiliza tipos de datos enteros en las fórmulas, debe saber que el redondeo puede causar inconsistencias en las fórmulas. Por ejemplo, los valores insertados se redondearían al primer dígito antes del punto decimal. Si el valor insertado fuera 123314.3147, al ser almacenado como entero, el valor resultante sería 123314. Esto es una clara inconsistencia si se esperaba el valor decimal completo.
Tipos de Datos Numéricos Exactos vs. Aproximados (Contexto Adicional)
Los tipos de datos numéricos exactos de SQL están formados por los subtipos NUMERIC(p,s) y DECIMAL(p,s). Son números exactos, y los definimos por su precisión (p) y escala (s). La precisión es un número entero que representa el número total de dígitos permitidos en esta columna. Estos dígitos están en una base de tipos numéricos (radix) específica, es decir, binaria (base 2) o decimal (base 10), y suelen conllevar un punto decimal.
Lea también: Guía IVA reducido
Existe una pequeña diferencia entre los tipos de datos numéricos NUMERIC(p,s) y DECIMAL(p,s) de SQL. NUMERIC determina la precisión y la escala exactas. DECIMAL especifica solo la escala exacta; su precisión es igual o mayor que la especificada por el programador. Además, sea consciente de que muchos de los principales sistemas de gestión de bases de datos tienen representaciones específicas del proveedor para los tipos de datos numéricos (por ejemplo, el tipo de datos NUMBER de Oracle).
Cuando inserte datos en una columna NUMERIC, recuerde sus límites de precisión. Si intenta insertar un número demasiado grande, es posible que obtenga un error. Sin embargo, el RDBMS puede redondear el número insertado, descartando cualquier dígito "extra" que esté a la derecha del punto decimal. Por ejemplo, en un caso particular, se podría mantener ".11" y descartar el "23" siguiente, haciendo que la inserción funcione de manera inesperada si se esperaba una precisión diferente.
Por otro lado, los tipos de datos numéricos float y relacionados con float de SQL contienen valores numéricos aproximados. Constan de una cifra significativa (un valor numérico con signo) y un exponente (un valor entero con signo que especifica el orden de magnitud de la cifra significativa). En los cálculos, los tipos aproximados pueden dar resultados extraños como 204.000000056, cuando el resultado exacto debería ser 204. Si se está creando una base de datos para una aplicación de ingeniería o científica, los tipos de datos flotantes valdrían. También, hay una diferencia de velocidad; si se está haciendo un número excepcionalmente alto de cálculos complicados (por ejemplo, funciones trigonométricas, etc.), estos serían mucho más rápidos con tipos flotantes que con el resto de tipos de datos numéricos. El catálogo de tipos de datos numéricos de SQL no se limita a los enteros y decimales. Estos solo son un reflejo de la necesidad de almacenar los datos de forma segura, predecible y utilizable.
Declaración y Uso de Variables Enteras en SQL
Las variables en SQL son espacios temporales donde puedes almacenar un valor o conjunto de datos para luego usarlos dentro de una consulta o procedimiento. Son útiles cuando necesitas usar un valor en múltiples partes de tu código o si el valor que vas a utilizar depende de un cálculo previo.
Declaración de Variables Escalares (Enteros)
Una variable local de Transact-SQL es un objeto que contiene un valor individual de datos de un tipo específico. En algunos sistemas de bases de datos (como SQL Server o MySQL), las variables se declaran usando la instrucción DECLARE. Se debe asignar un nombre y un tipo de datos suministrado por el sistema o definido por el usuario y una longitud. En el caso de las variables numéricas, puede asignar una precisión y una escala opcional.
Lea también: ¿Cómo localizar tus XML del SAT?
Las variables escalares almacenan un solo valor. Por ejemplo, puedes usar una variable para almacenar un número entero.
Asignación de Valores a Variables Enteras
Cuando se declara por primera vez una variable, su valor es NULL. Para asignar un valor a una variable, use la instrucción SET. Este método es la manera preferida de asignar un valor a una variable. Para asignar un valor a una variable mediante la instrucción SET, incluya el nombre de la variable y el valor que se va a asignar a la variable.
También puede asignar un valor a una variable haciendo referencia a ella en una lista de selección. Si hace referencia a una variable de una lista de selección, asígnele un valor escalar o asegúrese de que la SELECT instrucción devuelve solo una fila. Si hay varias cláusulas de asignación en una sola SELECT instrucción, el motor de base de datos no garantiza el orden de evaluación de las expresiones. Si una SELECT instrucción devuelve más de una fila y la variable hace referencia a una expresión nocalar, la variable se establece en el valor devuelto para la expresión en la última fila del conjunto de resultados.
Ámbito de las Variables
El ámbito de una variable es el conjunto de instrucciones de Transact-SQL que pueden hacer referencia a la variable. El ámbito de una variable dura desde el punto que se declara hasta el final del lote o procedimiento almacenado en el que se declara. Las variables tienen ámbito local y solo están visibles dentro del lote o procedimiento donde se definen.
¿Cuándo usar variables?
El uso de variables en SQL no solo te ayudará a escribir código más limpio y legible, sino que también te dará más flexibilidad a la hora de realizar consultas complejas. Deberías usarlas:
- Cuando necesitas realizar una misma operación o cálculo varias veces.
- Cuando quieres almacenar resultados temporales para usarlos en varios lugares de tu código.
- Para hacer consultas dinámicas donde los valores puedan cambiar dependiendo de la lógica.
