Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp

Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp

Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp

In MySQL-Datentypen wie INT, FLOAT, DOUBLE, CHAR, DECIMAL usw. haben alle ihre eigenen Funktionen. Hier werden wir hauptsächlich die Funktion und Verwendung des DECIMAL-Typs in MySQL-Datentypen vorstellen.

Normalerweise werden Gleitkommaspalten zugewiesene Werte auf die für die Spalte angegebene Dezimalzahl gerundet. Wenn Sie 1, 2 3 4 5 6 in einer FLOAT(8, 1)-Spalte speichern, ist das Ergebnis 1, 2. Wenn der gleiche Wert in einer FLOAT(8, 4)-Spalte gespeichert ist, ist das Ergebnis 1, 2 3 4 6.

Dies bedeutet, dass Sie Gleitkommaspalten mit genügend Bits definieren sollten, um einen möglichst präzisen Wert zu erhalten. Wenn Sie eine Genauigkeit von einem Tausendstel wünschen, definieren Sie den Typ nicht so, dass er nur zwei Dezimalstellen hat.

Diese Behandlung von Gleitkommawerten wurde in MySQL 3.23 ausgenommen, als sich die Leistung von FLOAT(4) und FLOAT(8) änderte. Diese beiden Typen sind jetzt Typen mit einfacher Genauigkeit (4 Byte) und doppelter Genauigkeit (8 Byte), die echte Gleitkommatypen in dem Sinne sind, dass ihre Werte wie angegeben gespeichert werden (vorbehaltlich lediglich der Hardwarebeschränkungen).

Der Typ DECIMAL unterscheidet sich von FLOAT und DECIMAL, wobei DECIMAL tatsächlich als Zeichenfolge gespeichert wird. Der maximal mögliche Bereich von DECIMAL-Werten ist der gleiche wie der von DOUBLE, aber sein effektiver Bereich wird durch die Werte von M und D bestimmt. Wenn M geändert und D fixiert wird, erhöht sich sein Wertebereich mit zunehmender M. Die ersten drei Zeilen der Tabelle 2-7 veranschaulichen dies. Wenn M fest ist und D geändert wird, wird sein Wertebereich mit zunehmenden D kleiner (aber die Genauigkeit nimmt zu). Die letzten drei Zeilen der Tabelle 2-7 veranschaulichen dies.

Der Wertebereich für einen bestimmten DECIMAL-Typ hängt von der Version des MySQL-Datentyps ab. Bei Versionen vor MySQL 3.23 belegt jeder Wert einer DECIMAL(M, D)-Spalte M Bytes, und das Vorzeichen (falls erforderlich) und der Dezimalpunkt sind in den M Bytes enthalten. Somit kann eine Spalte vom Typ DECIMAL(5, 2) Werte im Bereich -9,99 bis 9 9 , 9 9 haben, da diese alle möglichen 5-stelligen Werte abdecken.

Ab MySQL 3.23 werden DECIMAL-Werte gemäß der ANSI-Spezifikation verarbeitet, die besagt, dass DECIMAL(M, D) in der Lage sein muss, jeden Wert mit M Ziffern und D Dezimalstellen darzustellen.

Beispielsweise muss DECIMAL(5, 2) alle Werte von -999,99 bis 999,99 darstellen können. Außerdem müssen Vorzeichen und Dezimalpunkt gespeichert werden, sodass DECIMAL-Werte seit MySQL 3.23 M + 2 Bytes belegen. Bei DECIMAL(5, 2) benötigt der „längste“ Wert (-999,99) 7 Bytes.

An einem Ende des positiven Bereichs ist kein positives Vorzeichen erforderlich, daher verwendet der MySQL-Datentyp es, um den Wertebereich über den von der ANSI-Spezifikation geforderten Wert hinaus zu erweitern. Beispielsweise ist der Maximalwert von DECIMAL(5, 2) 9 9 9 9. 9 9, weil 7 Bytes zur Verfügung stehen.

Kurz gesagt, in MySQL 3.23 und höher ist der Bereich von DECIMAL(M, D) gleich dem Bereich von DECIMAL(M + 2, D) in früheren Versionen. Wenn D für eine DECIMAL-Spalte in allen Versionen des MySQL-Datentyps 0 ist, wird kein Dezimalpunkt gespeichert. Dies hat zur Folge, dass der Wertebereich der Spalte erweitert wird, da die Bytes, die zuvor zur Speicherung des Dezimalpunkts verwendet wurden, nun zur Speicherung anderer Zahlen genutzt werden können.

Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder kommen Sie zur Diskussion in die Community. Vielen Dank fürs Lesen und ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung dieser Site!

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
  • Implementierung der MySQL-Dezimaldatentypkonvertierung
  • Detaillierte Erläuterung des Dezimal-Padding-Problems des Dezimal-Datentyps in MySQL
  • Detaillierte Erklärung zur Verwendung des MySQL-Datentyps DECIMAL
  • Ausführliche Erläuterung der Verwendung und Implementierung des Decimal-Typs in der Datenbank

<<:  VMware Workstation-Installation unter Linux

>>:  WeChat-Applet implementiert Anmeldeschnittstelle

Artikel empfehlen

So konfigurieren Sie eine statische Netzwerkverbindung in Linux

Das Konfigurieren der Netzwerkkonnektivität für L...

So installieren Sie die IonCube-Erweiterung mit Pagoda

1. Installieren Sie zuerst die Pagode Installatio...

Erfahrungsaustausch über die Priorität des Ladens von CSS-Stilen

Während der Projektentwicklung bin ich gestern auf...

Grundlegende Verwendung der Funktion find_in_set in MySQL

Vorwort Dies ist eine neue Funktion, die ich kürz...

Methoden zum Defragmentieren und Freigeben von Speicherplatz in MySQL-Tabellen

Inhaltsverzeichnis Ursachen der MySQL-Tabellenfra...

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

Web-Frontend-Entwicklung CSS-bezogene Teamzusammenarbeit

Die Frontend-Entwicklungsabteilung wächst, die Mi...