Unterscheiden Sie zwischen numerischen und dezimalen Datentypen in PostgreSQL

David Mbochi Njonge 20 Juni 2023
  1. Datentypen in PostgreSQL
  2. Melden Sie sich bei PostgreSQL an
  3. Verwenden Sie in PostgreSQL den Datentyp NUMERIC
  4. Verwenden Sie in PostgreSQL den Datentyp DECIMAL
  5. Abschluss
Unterscheiden Sie zwischen numerischen und dezimalen Datentypen in PostgreSQL

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 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