Detaillierte Erklärung zur Verwendung des MySQL-Datentyps DECIMAL

Detaillierte Erklärung zur Verwendung des MySQL-Datentyps DECIMAL

Der MySQL DECIMAL Datentyp wird zum Speichern exakter numerischer Werte in der Datenbank verwendet. Wir verwenden den Datentyp DECIMAL häufig für Spalten, die eine exakte Genauigkeit aufweisen müssen, wie etwa Gelddaten in Buchhaltungssystemen.

Um eine Spalte mit dem Datentyp DECIMAL zu definieren, verwenden Sie die folgende Syntax:

Spaltenname DECIMAL(P,D);

In der obigen Syntax:

  • P ist die Genauigkeit, die die Anzahl der signifikanten Stellen angibt. Der Bereich von P liegt 1〜65 .
  • D stellt die Anzahl der Ziffern nach dem Dezimalpunkt dar. Der Bereich von D liegt zwischen 0 und 30 . MySQL erfordert, dass D kleiner oder gleich ( <= ) P ist.

DECIMAL(P,D) bedeutet, dass die Spalte P Ziffern mit D Dezimalstellen speichern kann. Der tatsächliche Bereich einer Dezimalspalte hängt von der Genauigkeit und dem Maßstab ab.

Wie der INT-Datentyp verfügt auch der DECIMAL Datentyp über die Attribute UNSIGNED und ZEROFILL . Wenn das UNSIGNED Attribut verwendet wird, akzeptiert eine DECIMAL UNSIGNED Spalte keine negativen Werte.

Wenn Sie ZEROFILL verwenden, füllt MySQL den angezeigten Wert mit 0 auf, um die durch die Spaltendefinition angegebene Breite anzuzeigen. Wenn wir außerdem ZERO FILL für DECIMAL Spalte verwenden, fügt MySQL der Spalte automatisch das UNSIGNED Attribut hinzu.

Das folgende Beispiel definiert eine Spalte namens „ amount mit dem Datentyp DECIMAL .

Betrag DEZIMAL(6,2);

In diesem Beispiel können amount Betragsspalte bis zu 6 Ziffern mit 2 Dezimalstellen gespeichert werden. Der Bereich amount reicht daher von -9999.99 bis 9999.99 .

MySQL erlaubt die folgende Syntax:

Spaltenname DECIMAL(P);

Dies entspricht:

Spaltenname DECIMAL(P,0);

In diesem Fall enthält die Spalte weder Dezimalteil noch Dezimalpunkt.

Darüber hinaus können wir sogar die folgende Syntax verwenden.

Spaltenname DECIMAL;

In diesem Fall ist der Standardwert von P 10 .

MySQL DECIMAL-Speicher

MySQL weist den Speicherplatz für den ganzzahligen und den Dezimalteil separat zu. MySQL speichert DECIMAL im Binärformat. Es packt 9 Ziffern in 4 Bytes.

Für jeden Teil werden 4 Bytes benötigt, um jedes Vielfache 9 Bit-Zahl zu speichern. Der für die restlichen Nummern benötigte Speicherplatz ist in der folgenden Tabelle aufgeführt:

Verbleibende Nummern Bisschen
0 0
1–2 1
3–4 2
5–6 3
7-9 4

Beispielsweise hat DECIMAL(19,9) 9 Ziffern für den Bruchteil und 19 = 10 Ziffern für den Ganzzahlteil, sodass für den Bruchteil 4 Bytes erforderlich sind. Der ganzzahlige Teil erfordert 4 Bytes für die ersten 9 Ziffern und 1 Byte für die 1 Ziffer. DECIMAL(19,9) -Spalte benötigt insgesamt 9 Bytes.

MySQL DECIMAL-Datentyp und monetäre Daten

Monetäre Daten wie Preise, Gehälter, Kontostände usw. verwenden häufig den Datentyp DECIMAL . Wenn Sie eine Datenbank zur Verarbeitung monetärer Daten entwerfen möchten, können Sie sich auf die folgende Syntax beziehen:

Betrag DEZIMAL(19,2);

Wenn Sie jedoch die allgemein anerkannten Rechnungslegungsgrundsätze (GAAP) einhalten möchten, muss die Währungsspalte mindestens 4 Dezimalstellen enthalten, um sicherzustellen, dass der gerundete Wert $0.01 nicht überschreitet. In diesem Fall sollte die Spalte mit 4 Dezimalstellen wie folgt definiert werden:

Betrag DEZIMAL(19,4);

Beispiel für den MySQL DECIMAL-Datentyp

Erstellen Sie zunächst eine neue Tabelle namens test_order mit drei Spalten: id , description und cost .

Tabelle erstellen Testbestellung (
 ID INT AUTO_INCREMENT PRIMARY KEY,
 Beschreibung VARCHAR(255),
 Kosten DECIMAL(19,4) NICHT NULL
);

Der zweite Schritt besteht darin, Daten in die Tabelle test_order einzufügen.

INSERT INTO test_order(Beschreibung,Kosten)
WERTE('Fahrrad', 500,34),('Sitz',10,23),('Pause',5,21);

Der dritte Schritt besteht darin, Daten aus der Tabelle test_order abzufragen.

SELECT * aus Testbestellung

查詢結果:

Schritt 4. Ändern Sie cost , um das ZEROFILL Attribut einzuschließen.

ALTER TABLE test_order
Kosten ändern DECIMAL (19,4) mit Nullen auffüllen;

Schritt 5. Fragen Sie die Testorder-Tabelle erneut ab.

SELECT * aus Testbestellung

Abfrageergebnisse:

Wie Sie oben sehen können, sind in den Ausgabewerten viele Nullen enthalten.

Aufgrund der Nullauffüllung erhalten wir einen Fehler, wenn wir einen negativen Wert einfügen:

INSERT INTO test_order(Beschreibung,Kosten)
WERTE('test', -100,11);
<br>Tipps:
[SQL]INSERT INTO test_order(Beschreibung,Kosten)
WERTE('test', -100,11)

[Err] 1264 - Wert für Spalte „Kosten“ in Zeile 1 liegt außerhalb des gültigen Bereichs

Weitere Schlussfolgerungen zum Einfügungstest:

Wenn der Wert innerhalb des Bereichs liegt und zusätzliche Dezimalstellen aufweist, werden die zusätzlichen Dezimalstellen direkt nach dem Runden abgeschnitten.

Liegt der Wert außerhalb des Bereichs, wird direkt ein „Außerhalb des Bereichs“-Fehler gemeldet.

Dies ist das Ende dieses Artikels über die detaillierte Verwendung des MySQL-Datentyps DECIMAL. Weitere Informationen zum MySQL-Datentyp DECIMAL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Eine kurze Einführung in die Verwendung des Dezimaltyps in MySQL
  • Der Unterschied zwischen dem Dezimaltyp und dem Float Double in MySQL (ausführliche Erklärung)
  • Detaillierte Erklärung der Bedeutung von N und M im MySQL-Datentyp DECIMAL(N,M)
  • Methode zum Konvertieren einer numerischen Zeichenfolge in wissenschaftlicher Notation in den Dezimaltyp
  • Datenbankdatentyp Float zum C#-Typ Dezimal, Konvertierung des Float-Datentyps ist ungültig
  • Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp
  • Implementierung der MySQL-Dezimaldatentypkonvertierung
  • Detaillierte Erläuterung des Dezimal-Padding-Problems des Dezimal-Datentyps in MySQL
  • Ausführliche Erläuterung der Verwendung und Implementierung des Decimal-Typs in der Datenbank

<<:  Detaillierte Verwendung des JS-Arrays für jede Instanz

>>:  Konfiguration und Lizenzaktivierung der Remotedesktopdienste von Windows Server 2016 (2 Benutzer)

Artikel empfehlen

So verwenden Sie localStorage in JavaScript

Wenn Sie Entwickler sind und in die Welt von .NET...

So ändern Sie den Hostnamen in Linux

1. Den aktuellen Hostnamen anzeigen [root@fangjia...

Analyse der zum Ausführen von Docker erforderlichen Berechtigungen

Zum Ausführen von Docker sind Root-Rechte erforde...

Eine kurze Erläuterung zu „Group By“ in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Bereiten Sie ...

Erläuterung der Truncate Table-Verwendung

TRUNCATE-TABELLE Löscht alle Zeilen in einer Tabe...

So ändern Sie die Gruppe, zu der ein Benutzer in Linux gehört

Ändern Sie die Gruppe, zu der ein Benutzer in Lin...

MySQL: Praktische Erfahrung mit der Verwendung der Insert-Anweisung

Inhaltsverzeichnis 1. Mehrere Syntaxen von Insert...

Facebooks nahezu perfekte Neugestaltung aller Internetdienste

<br />Originalquelle: http://www.a-xuan.cn/?...