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

Eine kurze Diskussion über JavaScript-Drosselung und Anti-Shake

Inhaltsverzeichnis Drosselung und Anti-Shake Konz...

So konfigurieren Sie eine JDK-Umgebung unter Linux

1. Gehen Sie zur offiziellen Website, um das JDK-...

Spezifische Verwendung des Vollbild-Scrollens von fullpage.js

1.fullpage.js Download-Adresse https://github.com...

Detaillierte Erklärung, wie MySQL Phantom-Lesevorgänge löst

1. Was ist Phantomlesen? Wenn bei einer Transakti...

Änderung der Standardquelldatei sources.list des Ubuntu20.04 LTS-Systems

Wenn Sie den Inhalt der Datei „source.list“ verse...

Lösung für das img-Tag-Problem unter IE10

Finden Sie das Problem Ich habe vorher eine einfa...

So stellen Sie ein SpringCloud-Projekt mit Docker bereit

Inhaltsverzeichnis Docker-Image herunterladen Sta...

Einführung in neue ECMAscript-Objektfunktionen

Inhaltsverzeichnis 1. Objekteigenschaften 1.1 Att...

Docker-Lernen: Die spezifische Verwendung von Container-Containern

Container sind ein weiteres Kernkonzept von Docke...

Wie stellt MySQL die Master-Slave-Konsistenz sicher?

Inhaltsverzeichnis Das Grundprinzip von MySQL Mas...

Detaillierte Analyse der MySQL-Optimierung von like und = Leistung

Einführung Die meisten Leute, die schon einmal Da...