CodeGym /Cursos /SQL SELF /Tipos de datos numéricos: INTEGER, N...

Tipos de datos numéricos: INTEGER, NUMERIC, FLOAT

SQL SELF
Nivel 15 , Lección 1
Disponible

Hoy vamos a hablar sobre los tipos de datos numéricos en PostgreSQL. Si alguna vez te has preguntado cómo guardar el número "42", cálculos financieros o, tal vez, milisegundos, — este es tu sitio. Vamos a ver qué tipo es el mejor para cada tarea, para que tú y tus datos estéis a gusto.

Los tipos de datos numéricos en PostgreSQL se dividen en tres grupos principales:

  1. Números enteros (INTEGER): para guardar números sin parte decimal. Son los típicos números como 1, 42, -7.
  2. Números exactos (NUMERIC): para guardar números con una cantidad fija de decimales. Muy útil para cálculos financieros, donde la precisión es más importante que la vida misma.
  3. Números de coma flotante (REAL): para guardar números que pueden ser muy grandes o increíblemente pequeños. Son menos precisos que NUMERIC, pero perfectos para cálculos científicos.

Tipo INTEGER

INTEGER es el tipo de datos para números enteros. Ideal cuando necesitas guardar números sin decimales. PostgreSQL ofrece tres variantes de INTEGER para cubrir diferentes rangos:

  • SMALLINT: tipo entero pequeño. Rango: de -32,768 a 32,767.
  • INTEGER (o INT): tipo entero estándar. Rango: de -2,147,483,648 a 2,147,483,647.
  • BIGINT: para números grandes. Rango: de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807.

Imagina que tenemos una tabla students donde guardamos info sobre los estudiantes: su nombre, edad y cantidad de créditos (puntos académicos):

id name age credits
1 Otto Nate 21 30
2 Maria Chi 22 45
3 Peter Val 20 60
4 Anna Song 23 50
5 Sophie Zhang 21 35

Ahora hacemos una consulta SQL sencilla para sacar la lista de estudiantes con su edad y créditos:

SELECT name, age, credits
FROM students;

Resultado:

name age credits
Otto Nate 21 30
Maria Chi 22 45
Peter Val 20 60
Anna Song 23 50
Sophie Zhang 21 35

¿Cuándo usar INTEGER?

  • Guardar identificadores (id, número de pedido).
  • Guardar cantidades de algo (por ejemplo, cantidad de productos en stock, cantidad de estudiantes).

Tipo NUMERIC

NUMERIC es el tipo de datos para números exactos con coma fija. Si necesitas guardar algo como 123.456, y un error en un decimal te puede costar la reputación (o el dinero), usa NUMERIC.

Formato de declaración: NUMERIC(precision, scale), donde:

  • precision — cantidad total de dígitos (incluyendo los antes y después de la coma).
  • scale — cantidad de dígitos después de la coma.

Por ejemplo, NUMERIC(6, 2) te deja guardar números con máximo 6 dígitos y 2 de ellos después de la coma.

Vamos a crear una tabla para registrar transacciones financieras:

id description amount
1 Pago por estudios 2345.67
2 Beca mensual 500.00
3 Cuota de laboratorio 145.99
4 Multa de biblioteca 12.75
5 Registro en conferencia 320.50

Ahora sacamos la lista de transacciones:

SELECT description, amount
FROM transactions;

Resultado:

description amount
Pago por estudios 2345.67
Beca mensual 500.00
Cuota de laboratorio 145.99
Multa de biblioteca 12.75
Registro en conferencia 320.50

¿Cuándo usar NUMERIC?

  • Cálculos financieros (precio de productos, sueldos).
  • Guardar medidas exactas (peso, longitud).

Tabla measurements

id mass - REAL height - REAL
1 70.5 1.83
2 64.2 1.75
3 82.3 1.92
4 55.0 1.60

Ahora mostramos los valores:

SELECT mass, height
FROM measurements;

Resultado:

mass height
70.5 1.83
64.2 1.75
82.3 1.92
55.0 1.60

¿Cuándo usar REAL?

  • Cálculos científicos (masa de átomos, distancia a la Luna).
  • Modelado de datos donde se permiten errores pequeños.

Comparación de tipos numéricos: ¿cuándo usar cada uno?

Tipo de dato Rango Precisión Ejemplos de uso
SMALLINT -32,768 a 32,767 Números enteros Números pequeños (edad, puntuaciones).
INTEGER -2,147,483,648 a 2,147,483,647 Números enteros Identificadores, cantidades.
BIGINT -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 Números enteros Números muy grandes.
NUMERIC Depende de precision y scale Números decimales exactos Finanzas, medidas.
REAL Aproximadamente 6 decimales Punto flotante Datos aproximados o científicos.
DOUBLE PRECISION Aproximadamente 15 decimales Punto flotante de alta precisión Ciencia, investigación.

Alias

En PostgreSQL muchos tipos numéricos tienen alias (sinónimos): son nombres alternativos de tipos que funcionan igual, pero mejoran la legibilidad o la compatibilidad con otros SGBD.

Aquí tienes una guía rápida y clara de los alias de tipos numéricos en PostgreSQL:

Alias para tipos enteros

Alias Tipo real Tamaño Rango
INT INTEGER 4 bytes −2,147,483,648 a 2,147,483,647
INT4 INTEGER 4 bytes (alias obsoleto)
SMALLINT SMALLINT 2 bytes −32,768 a 32,767
INT2 SMALLINT 2 bytes
BIGINT BIGINT 8 bytes −9 quintillones a +9 quintillones
INT8 BIGINT 8 bytes

Alias para números exactos

Alias Tipo real Propósito
DEC NUMERIC Sinónimo según el estándar SQL
DECIMAL NUMERIC Lo mismo

Alias para números de coma flotante

Alias Tipo real Precisión
FLOAT DOUBLE PRECISION ~15 dígitos (por defecto)
FLOAT(24) REAL ~6 dígitos
FLOAT(53) DOUBLE PRECISION ~15 dígitos
FLOAT8 DOUBLE PRECISION Alias obsoleto
FLOAT4 REAL Alias obsoleto

Errores típicos

Al trabajar con tipos numéricos, puedes encontrarte con varias trampas:

Elegir un tipo de dato demasiado pequeño. Si usas SMALLINT para la edad de las personas, te equivocas. Al robot de "Matrix", que tiene millones de años, le va a molestar.

Pérdida de datos por redondeo. Si usas REAL en cálculos financieros, puedes perder céntimos. Y luego la confianza de los clientes.

Comparar diferentes tipos. Si comparas INTEGER y REAL, puedes tener resultados raros por cómo se representan los números de coma flotante.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION