Diferenciar entre tipos de datos numéricos y decimales en PostgreSQL
- Tipos de datos en PostgreSQL
- Iniciar sesión en PostgreSQL
-
Utilice el tipo de datos
NUMERIC
en PostgreSQL -
Utilice el tipo de datos
DECIMAL
en PostgreSQL - Conclusión
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 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