Vorwort: Wenn wir Dezimalzahlen speichern müssen und Genauigkeitsanforderungen haben, wie z. B. das Speichern von Beträgen, ziehen wir normalerweise die Verwendung des DECIMAL-Feldtyps in Betracht. Vielleicht haben die meisten Studenten nur ein geringes Verständnis des DECIMAL-Typs und die Details sind nicht sehr klar. Dieser Artikel beginnt bei Null und informiert Sie über die Verwendungsszenarien und Methoden des DECIMAL-Feldtyps. 1. Einführung in den DECIMAL-Typ DECIMAL wurde in MySQL 5.1 eingeführt. Die Spaltendeklarationssyntax ist DECIMAL(M,D). NUMERIC ist gleichbedeutend mit DECIMAL. Wenn der Feldtyp als NUMERIC definiert ist, wird er automatisch in DECIMAL konvertiert. Bei der Deklarationssyntax DECIMAL(M,D) ergeben sich folgende Wertebereiche der unabhängigen Variablen:
Beispielsweise kann das Feld „Gehalt“ DECIMAL(5,2) jeden beliebigen Wert mit fünf Ziffern und zwei Dezimalstellen speichern, sodass der Wertebereich, der in der Spalte „Gehalt“ gespeichert werden kann, von -999,99 bis 999,99 reicht. 2. Tatsächliche Verwendung von DECIMAL Als nächstes erstellen wir eine Testtabelle, um die Verwendung des Feldtyps DECIMAL zu überprüfen: # Erstellen Sie eine Tabelle mit einem DECIMAL-Feld und überprüfen Sie, dass der Standardwert decimal(10,0) ist. mysql> Tabelle erstellen decimal_tb (Spalte1 Dezimal,Spalte2 Dezimal(5,2)); Abfrage OK, 0 Zeilen betroffen (0,04 Sek.) mysql> zeigen erstellen Tabelle decimal_tb\G *************************** 1. Reihe *************************** Tabelle: decimal_tb Tabelle erstellen: CREATE TABLE `decimal_tb` ( `col1` decimal(10,0) DEFAULT NULL, `col2` Dezimalzahl (5,2) STANDARD NULL ) ENGINE=InnoDB STANDARD-CHARSET=utf8 1 Zeile im Satz (0,00 Sek.) # Datentest einfügen# Fazit: Bei Überschreitung des Speicherbereichs wird ein Fehler gemeldet. Bei zu geringen Nachkommastellen wird automatisch 0 hinzugefügt. Ist die erste Ziffer 0, wird sie automatisch ignoriert. Überschreiten die Nachkommastellen den Bereich, wird die Zahl gekürzt und gerundet. mysql> in decimal_tb (col1,col2) Werte einfügen (100,100); Abfrage OK, 1 Zeile betroffen (0,05 Sek.) mysql> in decimal_tb (col2) Werte einfügen (1,23); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> Werte in decimal_tb (col2) einfügen (10.2); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> in decimal_tb (col2) Werte einfügen (09.9); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) mysql> wähle * aus decimal_tb; +------+--------+ | Spalte1 | Spalte2 | +------+--------+ | 100 | 100,00 | | NULL | 1,23 | | NULL | 10.20 | | NULL | 9,90 | +------+--------+ 4 Zeilen im Satz (0,00 Sek.) mysql> in decimal_tb (col2) Werte einfügen (9999); FEHLER 1264 (22003): Wert für Spalte „col2“ in Zeile 1 liegt außerhalb des gültigen Bereichs mysql> in decimal_tb (col2) Werte einfügen (12.233); Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,01 Sek.) mysql> Warnungen anzeigen; +-------+------+------------------------------------------+ | Ebene | Code | Nachricht | +-------+------+------------------------------------------+ | Hinweis | 1265 | Daten für Spalte „col2“ in Zeile 1 abgeschnitten | +-------+------+------------------------------------------+ 1 Zeile im Satz (0,00 Sek.) mysql> in decimal_tb (col2) Werte einfügen (12.2300); Abfrage OK, 1 Zeile betroffen (0,01 Sek.) # Variabler Bereichstest# Schlussfolgerung: M reicht von 1 bis 65, D reicht von 0 bis 30 und D ist nicht größer als M mysql> Tabelle ändern decimal_tb Spalte hinzufügen col3 decimal(6,6); Abfrage OK, 0 Zeilen betroffen (0,12 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 mysql> Tabelle ändern decimal_tb Spalte hinzufügen col4 decimal(6,7); FEHLER 1427 (42000): Für float(M,D), double(M,D) oder decimal(M,D) muss M >= D sein (Spalte „col4“). mysql> Tabelle ändern decimal_tb Spalte hinzufügen col4 decimal(65,2); Abfrage OK, 0 Zeilen betroffen (0,11 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 mysql> Tabelle ändern decimal_tb Spalte hinzufügen col4 decimal(66,2); FEHLER 1426 (42000): Für „col4“ wurde zu große Genauigkeit von 66 angegeben. Das Maximum liegt bei 65. mysql> Tabelle ändern, decimal_tb, Spalte col5 hinzufügen, decimal(60,30); Abfrage OK, 0 Zeilen betroffen (0,13 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 mysql> Tabelle ändern decimal_tb Spalte hinzufügen col6 decimal(60,31); FEHLER 1425 (42000): Für Spalte „col6“ wurde ein zu großer Maßstab von 31 angegeben. Das Maximum liegt bei 30. 3. Zusammenfassung der DECIMAL-Verwendung Der obige Inhalt stellt die Verwendung und Vorsichtsmaßnahmen des DECIMAL-Typs aus praktischer Sicht vor. Möglicherweise kennen Sie auch Gleitkommatypen wie float und double, die auch Dezimalzahlen speichern können, aber ich werde sie hier nicht im Detail vorstellen. Ich möchte Sie nur daran erinnern, dass die Typen float und double keine Genauigkeit gewährleisten können und fehleranfällig sind, insbesondere bei der Durchführung von Summationsberechnungen. Daher wird empfohlen, beim Speichern von Dezimalzahlen den Typ DECIMAL zu verwenden, insbesondere wenn es sich um Beträge handelt. Hier noch einmal zusammengefasst, worauf Sie bei der Verwendung von DECIMAL achten sollten:
Zusammenfassen: Dieser Artikel ist relativ einfach und praktisch. Nach dem Lesen werden Sie wahrscheinlich die Verwendungsszenarien und Vorsichtsmaßnahmen für DECIMAL-Felder verstehen. Tatsächlich müssen wir für gängige Feldtypen nur ihre Verwendungsszenarien und Vorsichtsmaßnahmen verstehen. Wenn wir eine Tabelle erstellen, besteht unser Ziel darin, schnell den geeigneten Feldtyp auswählen zu können. Wenn wir beispielsweise Dezimalzahlen speichern müssen, können wir den DECIMAL-Typ verwenden und die geeignete Genauigkeit entsprechend den Geschäftsanforderungen auswählen, sodass unsere Arbeit einfach auszuführen ist. Oben finden Sie den detaillierten Inhalt der eingehenden Analyse des MySQL-Datentyps DECIMAL. Weitere Informationen zum MySQL-Datentyp DECIMAL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux
>>: Mehrere Möglichkeiten zum Kapseln von Breadcrumb-Funktionskomponenten in Vue3
1. Zwei Wörter am Anfang Hallo zusammen, mein Nam...
Vorwort Wir alle wissen, dass MySQL die Server-ID...
Ich bin auf ein Beispiel gestoßen, als ich nach e...
Cursor Ein Cursor ist eine Methode zum Anzeigen o...
Schritt 1: Signieren Sie ein vertrauenswürdiges S...
html2canvas ist eine Bibliothek, die Canvas aus H...
Wenn Sie Ihr MySQL-Anmeldekennwort vergessen, ist...
Inhaltsverzeichnis Verwendung Strukturzweige Code...
Übersetzen Sie diese URL: http://translateth.is G...
Führen Sie zuerst den Befehl aus: [root@mini61 se...
Inhaltsverzeichnis 1. Problem 2. Lösung 2.1 Pagin...
Wie konvertiere ich eine JSON-Zeichenfolge in ein...
Inhaltsverzeichnis Hintergrund Was ist das Metave...
Bei Datenbanken, die schon lange laufen, besteht ...
Vorwort Ich habe vor Kurzem meine bisherigen Noti...