Diferenciar entre tipos de datos numéricos y decimales en PostgreSQL

David Mbochi Njonge 20 junio 2023
  1. Tipos de datos en PostgreSQL
  2. Iniciar sesión en PostgreSQL
  3. Utilice el tipo de datos NUMERIC en PostgreSQL
  4. Utilice el tipo de datos DECIMAL en PostgreSQL
  5. Conclusión
Diferenciar entre tipos de datos numéricos y decimales en PostgreSQL

Este tutorial guía al lector sobre la diferencia entre los tipos de datos numéricos y decimales en la base de datos PostgreSQL.

Tipos de datos en PostgreSQL

La base de datos PostgreSQL tiene muchos tipos de datos que van desde texto a numérico, incluyendo “entero”, bigint, decimal, “numérico”, “caracter variable”, “carácter”, “texto”, etc.

Estos tipos de datos nos ayudan a almacenar los datos de una aplicación. El tipo de datos elegido depende de los requisitos de almacenamiento y el rendimiento general de la aplicación; por ejemplo, el tipo de datos bigint se utiliza cuando el tipo de datos integer no cumple con los requisitos de almacenamiento de nuestros datos.

Cuando se trabaja con datos que no tienen la parte fraccionaria, como la edad de una persona, se recomienda utilizar los tipos de datos que no tienen la parte de escala, como el entero. Cuando se trabaja con datos que tienen la parte fraccionaria, como el precio de un producto, se recomienda utilizar los tipos de datos que tienen la parte de escala, como numérico y decimal.

En este tutorial, aprenderemos a utilizar los tipos de datos NUMERIC y DECIMAL para representar valores monetarios.

Iniciar sesión en PostgreSQL

Para iniciar sesión en la base de datos PostgreSQL, abra una nueva ventana de terminal y use el siguiente comando para iniciar sesión en el servidor PostgreSQL local.

david@david-HP-ProBook-6470b:~$ psql -U 

Presione el botón Enter en su teclado, y si se solicita una contraseña, ingrese la contraseña creada durante la instalación de la base de datos y presione Enter nuevamente. Si la contraseña es correcta, la ventana del terminal debe conectarse a la base de datos postgres, como se muestra a continuación.

david@david-HP-ProBook-6470b:~$ psql -U postgres
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# 

Utilice el tipo de datos NUMERIC en PostgreSQL

Usaremos una base de datos separada para cada ejemplo para comprender cómo varían estos dos tipos numéricos. Use el siguiente comando SQL para crear una base de datos llamada numeric_db.

numeric_vs_decimal=# create database numeric_db;
CREATE DATABASE

El CREATE DATABASE muestra que la base de datos se creó con éxito. Solo necesitamos usar el siguiente comando para conectarnos a la base de datos.

numeric_vs_decimal=# \c numeric_db;
You are now connected to database "numeric_db" as user "postgres".
numeric_db=#

La ventana de la terminal ahora debería estar conectada a numeric_db, como se muestra en el código anterior.

Copie y pegue el siguiente comando SQL en la terminal para crear una tabla llamada producto con la clave principal id y los atributos productName y productPrice.

numeric_db=# create table product(
numeric_db(# id SERIAL NOT NULL UNIQUE,
numeric_db(# productName VARCHAR(100),
numeric_db(# productPrice NUMERIC(6,4));
CREATE TABLE

El CREATE TABLE muestra que la tabla fue creada. Tenga en cuenta que productName es de tipo VARCHAR y productPrice es de tipo NUMERIC.

Tenga en cuenta que hemos pasado los argumentos 6 y 4 en la declaración del tipo de datos productPrice. Los parámetros proporcionan información sobre la precisión y la escala de los datos, respectivamente.

La precisión se refiere al número total de dígitos en ambos lados del punto decimal y la escala se refiere al número de dígitos en la parte fraccionaria. Cuando se trabaja con dinero, es crucial definir la escala para garantizar que los valores fraccionarios grandes se coaccionen a la escala requerida.

Para ver esto en acción, use el siguiente comando SQL para insertar algunos valores en la tabla producto.

numeric_db=# insert into product(productName,productPrice)
numeric_db-# values ('Iphone 13 Pro',25.48678),
numeric_db-# ('Samsung galaxy a53',15.5476);
INSERT 0 2

El INSERTAR muestra que los valores se insertaron con éxito. Tenga en cuenta que entre los dos tipos de datos numéricos, el primero tiene una precisión de 7, lo que viola nuestra precisión de 6.

Dado que especificamos una escala de 4, nuestro valor será coaccionado a la escala exacta que establezcamos. Utilice el siguiente comando SQL para ver el valor insertado en la tabla.

numeric_db=# select * from product;
 id |    productname     | productprice 
----+--------------------+--------------
  1 | Iphone 13 Pro      |      25.4868
  2 | Samsung galaxy a53 |      15.5476
(2 rows)

Utilice el tipo de datos DECIMAL en PostgreSQL

Para este ejemplo, usaremos una base de datos llamada decimal_db. Use el comando que usamos en el ejemplo anterior para crear esta base de datos.

Después de crear la base de datos, conéctese a la base de datos y use el siguiente comando SQL para crear una tabla llamada producto con una clave principal llamada id y los atributos productName y productPrice.

decimal_db=# create table product(
decimal_db(# id SERIAL NOT NULL UNIQUE,
decimal_db(# productName VARCHAR(100),
decimal_db(# productPrice DECIMAL(6,4));
CREATE TABLE

Tenga en cuenta que esta tabla es similar a la tabla del ejemplo anterior. El único cambio que hemos hecho es convertir el tipo de datos productPrice de NUMERIC a DECIMAL.

Utilice el siguiente comando SQL para insertar algunos valores en la tabla de productos. Como se vio en el ejemplo anterior, la escala se asegurará de que el valor se coaccione a la escala exacta que hemos especificado.

decimal_db=# INSERT INTO product(productName, productPrice)
decimal_db-# VALUES ('IPhone 13 Pro',25.48678),
decimal_db-# ('Samsung galaxy a53',14.5476);
INSERT 0 2

La instrucción INSERT es la misma que la del ejemplo anterior y no se han realizado cambios. Para verificar que la declaración INSERT funcionó como se esperaba, use el siguiente comando SQL para ver los valores insertados en la tabla.

decimal_db=# select * from product;
 id |    productname     | productprice 
----+--------------------+--------------
  1 | IPhone 13 Pro      |      25.4868
  2 | Samsung galaxy a53 |      14.5476
(2 rows)

Conclusión

En este tutorial, hemos aprendido a usar los tipos de datos NUMERIC y DECIMAL en PostgreSQL. Hemos visto cómo coaccionan los valores, lo cual es crucial cuando se trabaja con valores monetarios.

Estos ejemplos muestran que los dos tipos de datos no tienen diferencias y se pueden usar indistintamente. El lector debe tener la libertad de usar NUMÉRICO o DECIMAL, ya que tendrán el mismo efecto.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub