Unterscheiden Sie zwischen numerischen und dezimalen Datentypen in PostgreSQL
- Datentypen in PostgreSQL
- Melden Sie sich bei PostgreSQL an
-
Verwenden Sie in PostgreSQL den Datentyp
NUMERIC
-
Verwenden Sie in PostgreSQL den Datentyp
DECIMAL
- Abschluss
Dieses Tutorial führt den Leser durch den Unterschied zwischen numerischen und dezimalen Datentypen in der PostgreSQL-Datenbank.
Datentypen in PostgreSQL
Die PostgreSQL-Datenbank hat viele Datentypen, die von Text bis numerisch reichen, einschließlich Ganzzahl
, bigint
, Dezimal
, Numerisch
, Zeichen variierend
, Zeichen
, text
usw.
Diese Datentypen helfen uns, die Daten einer Anwendung zu speichern. Der gewählte Datentyp hängt von den Speicheranforderungen und der allgemeinen Anwendungsleistung ab; Beispielsweise wird der Datentyp bigint
verwendet, wenn der Datentyp integer
die Speicheranforderungen unserer Daten nicht erfüllt.
Wenn Sie mit Daten arbeiten, die keinen Bruchteil haben, wie z. B. das Alter einer Person, wird empfohlen, die Datentypen zu verwenden, die keinen Skalenteil haben, wie z. B. integer
. Wenn Sie mit Daten arbeiten, die den Bruchteil haben, wie z. B. den Preis eines Produkts, wird empfohlen, die Datentypen zu verwenden, die den Skalenteil haben, wie z. B. numerisch
und dezimal
.
In diesem Tutorial lernen wir, wie man die Datentypen NUMERIC
und DECIMAL
verwendet, um Geldwerte darzustellen.
Melden Sie sich bei PostgreSQL an
Um sich bei der PostgreSQL-Datenbank anzumelden, öffnen Sie ein neues Terminalfenster und verwenden Sie den folgenden Befehl, um sich beim lokalen PostgreSQL-Server anzumelden.
david@david-HP-ProBook-6470b:~$ psql -U
Drücken Sie die Enter-Taste auf Ihrer Tastatur, und wenn Sie nach einem Passwort gefragt werden, geben Sie das während der Datenbankinstallation erstellte Passwort ein und drücken Sie erneut Enter. Wenn das Passwort korrekt ist, sollte das Terminalfenster wie unten gezeigt mit der postgres
-Datenbank verbunden werden.
david@david-HP-ProBook-6470b:~$ psql -U postgres
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
Verwenden Sie in PostgreSQL den Datentyp NUMERIC
Wir werden für jedes Beispiel eine separate Datenbank verwenden, um zu verstehen, wie sich diese beiden numerischen Typen unterscheiden. Verwenden Sie den folgenden SQL-Befehl, um eine Datenbank mit dem Namen numeric_db
zu erstellen.
numeric_vs_decimal=# create database numeric_db;
CREATE DATABASE
Das CREATE DATABASE
zeigt an, dass die Datenbank erfolgreich erstellt wurde. Wir müssen nur den folgenden Befehl verwenden, um eine Verbindung zur Datenbank herzustellen.
numeric_vs_decimal=# \c numeric_db;
You are now connected to database "numeric_db" as user "postgres".
numeric_db=#
Das Terminalfenster sollte nun mit numeric_db
verbunden werden, wie im obigen Code gezeigt.
Kopieren Sie den folgenden SQL-Befehl und fügen Sie ihn in das Terminal ein, um eine Tabelle namens product
mit dem Primärschlüssel id
und den Attributen productName
und productPrice
zu erstellen.
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
Das CREATE TABLE
zeigt an, dass die Tabelle erstellt wurde. Beachten Sie, dass productName
vom Typ VARCHAR
und productPrice
vom Typ NUMERIC
ist.
Beachten Sie, dass wir die Argumente 6
und 4
in der Deklaration des Datentyps productPrice
übergeben haben. Die Parameter geben Auskunft über die Genauigkeit bzw. den Umfang der Daten.
Die Genauigkeit bezieht sich auf die Gesamtzahl der Stellen auf beiden Seiten des Dezimalkommas, und die Skalierung bezieht sich auf die Anzahl der Stellen im Bruchteil. Bei der Arbeit mit Geld ist es entscheidend, die Skala zu definieren, um sicherzustellen, dass große Teilwerte auf die erforderliche Skala gezwungen werden.
Um dies in Aktion zu sehen, verwenden Sie den folgenden SQL-Befehl, um einige Werte in die Tabelle product
einzufügen.
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
Das INSERT
zeigt an, dass die Werte erfolgreich eingefügt wurden. Beachten Sie, dass zwischen den beiden numerischen Datentypen der erste eine Genauigkeit von 7
hat, was unsere Genauigkeit von 6
verletzt.
Da wir eine Skala von 4
angegeben haben, wird unser Wert auf die exakte Skala gezwungen, die wir festgelegt haben. Verwenden Sie den folgenden SQL-Befehl, um den in die Tabelle eingefügten Wert anzuzeigen.
numeric_db=# select * from product;
id | productname | productprice
----+--------------------+--------------
1 | Iphone 13 Pro | 25.4868
2 | Samsung galaxy a53 | 15.5476
(2 rows)
Verwenden Sie in PostgreSQL den Datentyp DECIMAL
Für dieses Beispiel verwenden wir eine Datenbank namens decimal_db
. Verwenden Sie den Befehl, den wir im vorherigen Beispiel verwendet haben, um diese Datenbank zu erstellen.
Nachdem Sie die Datenbank erstellt haben, verbinden Sie sich mit der Datenbank und verwenden Sie den folgenden SQL-Befehl, um eine Tabelle namens product
mit einem Primärschlüssel namens id
und den Attributen productName
und productPrice
zu erstellen.
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
Beachten Sie, dass diese Tabelle der Tabelle im vorherigen Beispiel ähnelt. Die einzige Änderung, die wir vorgenommen haben, ist die Konvertierung des Datentyps productPrice
von NUMERIC
in DECIMAL
.
Verwenden Sie den folgenden SQL-Befehl, um einige Werte in die Produkttabelle einzufügen. Wie im vorherigen Beispiel zu sehen ist, stellt die Skalierung sicher, dass der Wert auf die von uns angegebene exakte Skalierung gezwungen wird.
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
Die Anweisung INSERT
ist dieselbe wie im vorherigen Beispiel, und es wurden keine Änderungen vorgenommen. Um zu überprüfen, ob die Anweisung INSERT
wie erwartet funktioniert hat, verwenden Sie den folgenden SQL-Befehl, um die in die Tabelle eingefügten Werte anzuzeigen.
decimal_db=# select * from product;
id | productname | productprice
----+--------------------+--------------
1 | IPhone 13 Pro | 25.4868
2 | Samsung galaxy a53 | 14.5476
(2 rows)
Abschluss
In diesem Tutorial haben wir gelernt, wie man die Datentypen NUMERIC
und DECIMAL
in PostgreSQL verwendet. Wir haben gesehen, wie sie Werte erzwingen, was bei der Arbeit mit monetären Werten entscheidend ist.
Diese Beispiele zeigen, dass die beiden Datentypen keine Unterschiede aufweisen und austauschbar verwendet werden können. Dem Leser sollte es freistehen, NUMERIC
oder DECIMAL
zu verwenden, da sie denselben Effekt haben.
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