MySQL-Gelddatentyp

Mehvish Ashiq 16 Februar 2024
MySQL-Gelddatentyp

Dieses Tutorial stellt den Datentyp DECIMAL(P,D) vor, der sich am besten zum Speichern von Geldwerten in MySQL eignet.

MySQL-Gelddatentyp

Geldwerte brauchen die exakte Darstellung. Wir müssen nicht nur ungefähre Datentypen verwenden, zum Beispiel float.

Um monetäre Daten einzufügen, können wir den Vorteil eines festkommanumerischen Datentyps nutzen, zum Beispiel DECIMAL(P,D).

Das DECIMAL(P,D) gibt an, dass eine Spalte bis zu P Ziffern und D Dezimalstellen speichern kann. Das P und D werden nach der Syntax erklärt.

Wir können eine Spalte mit dem Datentyp DECIMAL(P,D) definieren.

# Syntax
columnName DECIMAL(P,D)

Hier stellt P die Genauigkeit dar, die die Anzahl der signifikanten Stellen anzeigt. Der Bereich ist 1 bis 65.

Während D eine Skala ist, spricht es für die Anzahl der Stellen, die wir nach dem Komma haben können. Der Bereich von D ist 0 und 30.

Bei der Verwendung von DECIMAL(P,D) muss die Bedingung D<=P erfüllt sein; Andernfalls erhalten wir einen Fehler. Wenn P und D nicht angegeben werden, beträgt die maximale Anzahl von Stellen 65 für die Spalte vom Typ DECIMAL.

Der Bereich einer Spalte vom Typ DEZIMAL hängt von der Genauigkeit (P) und der Skalierung (D) ab. Lassen Sie es uns verstehen, indem wir eine Tabelle demo mit zwei Attributen, ID und MONEY, erstellen und einige Daten füllen.

Sie können die folgenden Abfragen verwenden, um uns zu kontaktieren.

Beispielcode:

# create a table
CREATE table demo(
    ID INT NOT NULL PRIMARY KEY,
	MONEY DECIMAL(12,2) NOT NULL
);

# insert data
INSERT INTO demo VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);

# display data
SELECT * FROM demo;

Ausgang:

+----+---------------+
| ID | MONEY         |
+----+---------------+
|  1 | 1254367892.50 |
|  2 | 8754367893.60 |
|  3 | 9854367895.65 |
|  4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)

Wir können auch die Schlüsselwörter FIXED, DEC oder NUMERIC anstelle des Schlüsselworts DECIMAL verwenden, da alle erwähnten Schlüsselwörter das Synonym von DECIMAL sind. Sehen Sie sich das folgende Beispiel als Demonstration an.

Beispielcode:

# create a table
CREATE table demo1(
    ID INT NOT NULL PRIMARY KEY,
	MONEY FIXED(12,2) NOT NULL
);

# insert data
INSERT INTO demo1 VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);

# display data
SELECT * FROM demo;

Ausgang:

+----+---------------+
| ID | MONEY         |
+----+---------------+
|  1 | 1254367892.50 |
|  2 | 8754367893.60 |
|  3 | 9854367895.65 |
|  4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)

Wie INT können wir die Attribute ZEROFILL und UNSIGNED des Datentyps DECIMAL verwenden. Mit dem Attribut UNSIGNED kann das Tabellenfeld vom Typ DECIMAL(P,D) UNSIGNED keine negativen Werte annehmen.

Beispielsweise akzeptiert die mit der folgenden Abfrage erstellte Tabelle keinen negativen Wert für das Feld MONEY.

Beispielcode:

# create a table
CREATE table demo2(
    ID INT NOT NULL PRIMARY KEY,
    MONEY DECIMAL(12,2) UNSIGNED NOT NULL
);

Mit dem Attribut ZEROFILL füllt MySQL die Ergebniswerte mit 0 auf bis zu der durch eine Spaltendefinition vorgegebenen Breite.

Denken Sie daran, dass MySQL automatisch UNSIGNED hinzufügt, wenn wir das Attribut ZEROFILL verwenden. Wir können dies überprüfen, indem wir das DESCRIBE tableName; Anfrage.

Sehen Sie sich den folgenden Code als Beispiel an.

# create a table
CREATE table demo3(
    ID INT NOT NULL PRIMARY KEY,
    MONEY DECIMAL(12,2) ZEROFILL NOT NULL
);

# describe a table
DESCRIBE demo3;

Ausgang:

+-------+---------------------------------+------+-----+---------+-------+
| Field | Type                            | Null | Key | Default | Extra |
+-------+---------------------------------+------+-----+---------+-------+
| ID    | int                             | NO   | PRI | NULL    |       |
| MONEY | decimal(12,2) unsigned zerofill | NO   |     | NULL    |       |
+-------+---------------------------------+------+-----+---------+-------+
2 rows in set (0.26 sec)

Denken Sie immer daran, dass DECIMAL(P) äquivalent zu DECIMAL(P,0) und DECIMAL äquivalent zu DECIMAL(P,0) ist. Wir werden keinen Dezimalteil (Bruchteil) haben, indem wir DECIMAL(P,0) verwenden.

Die Implementierungen DECIMAL(P) und DECIMAL(P,0) lassen uns den Wert von P bestimmen. Der Standardwert von P ist 10, wenn wir die Standardimplementierung DECIMAL verwenden.

Weitere Informationen finden Sie hier.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook