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

Lösung für BT Baota Panel php7.3 und php7.4 unterstützen ZipArchive nicht

Die Lösung für das Problem, dass die PHP7.3-Versi...

Beispielcode zur Implementierung des Regentropfen-Animationseffekts mit CSS

Glasfenster Was wir heute erreichen werden, ist d...

JavaScript implementiert kreisförmigen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Ja...

So generieren Sie eine eindeutige Server-ID in MySQL

Vorwort Wir alle wissen, dass MySQL die Server-ID...

js, um den Effekt des Ziehens des Schiebereglers zu erzielen

In diesem Artikel finden Sie den spezifischen Cod...

So reduzieren Sie die Speicher- und CPU-Auslastung von Webseiten

<br />Einige Webseiten sehen nicht groß aus,...

JavaScript MouseEvent-Fallstudie

Mausereignis Wenn die Maus eine bestimmte Operati...

HTML-Tabellen-Tag-Tutorial (33): Attribut für vertikale Zellenausrichtung VALIGN

In vertikaler Richtung können Sie die Zellenausri...

Detaillierte Erläuterung des virtuellen DOM in der Vue-Quellcodeanalyse

Warum brauchen wir virtuellen Dom? Virtual DOM wu...

Reduzieren Sie die Speicher- und CPU-Auslastung durch die Optimierung von Webseiten

Manche Webseiten erscheinen möglicherweise nicht g...

Elemente der Benutzererfahrung oder Elemente des Webdesigns

System- und Benutzerumgebungsdesign <br />D...