Numerischer Datentyp
Numerische Daten unterscheiden sich nach exakt und näherungsweise sowie nach ganzzahlig und reell. Eine eigene Kategorie bilden Bit-Werte.
Exakte ganze Zahlen
Ganze Zahlen können mit dem Schlüsselwort UNSIGNED deklariert werden. Dann sind in der Spalte keine negativen Werte mehr möglich, und der erlaubte Wertebereich verdoppelt sich. So nimmt TINYINT Werte von -128 bis 127 an, TINYINT UNSIGNED dagegen von 0 bis 255.
Exakte reelle Zahlen
Der Typ DECIMAL speichert reelle Zahlen exakt. Er wird verwendet, wenn die Genauigkeit kritisch ist – zum Beispiel bei finanziellen Daten.
Beispiel:
MySQL 8.1CREATE TABLE Users ( ... salary DECIMAL(5,2) );
In diesem Beispiel wird festgelegt, dass in der Spalte salary Zahlen mit maximal 5 Stellen gespeichert werden, davon 2 nach dem Komma. Die Spalte fasst also Werte im Bereich von -999.99 bis 999.99.
Die Syntax DECIMAL ist äquivalent zu DECIMAL(M) und DECIMAL(M,0). Standardmäßig ist M gleich 10.
Vor- und Nachkommateil werden als zwei separate ganze Zahlen abgelegt. Damit lässt sich der Speicherbedarf leicht berechnen: Bei DECIMAL(5,2) hat der Vorkommateil 3 Stellen und braucht 2 Byte, der Nachkommateil mit 2 Stellen kommt mit 1 Byte aus. Insgesamt werden also 3 Byte benötigt.
Bit-Werte
Der Datentyp BIT(M) speichert eine Bit-Folge fester Länge. Standardmäßig sind das 8 Bit. Verwendet der zugewiesene Wert weniger als M Bit, wird links mit Nullen aufgefüllt. Versuchst du zum Beispiel, den Wert b'101' in BIT(6) zu schreiben, wird tatsächlich b'000101' gespeichert.
Näherungswerte
Auch Gleitkomma-Datentypen können UNSIGNED sein. Wie bei den ganzzahligen Typen verhindert das Attribut, dass in der Spalte negative Werte gespeichert werden, anders als dort bleibt der maximale Wertebereich der Spalte aber unverändert.
Ganze Zahlen
Auto-Increment-Typen
Die SERIAL-Typen sind Pseudotypen zum Anlegen von Auto-Increment-Spalten. SERIAL entspricht INTEGER mit einer automatisch erzeugten Sequenz.
Exakte reelle Zahlen
Der Typ NUMERIC speichert reelle Werte exakt. Er wird verwendet, wenn die Genauigkeit kritisch ist – zum Beispiel bei finanziellen Daten.
Beispiel:
MySQL 8.1CREATE TABLE Users ( ... salary NUMERIC(10,2) );
In diesem Beispiel wird festgelegt, dass in der Spalte salary Zahlen mit maximal 10 Stellen gespeichert werden, davon 2 nach dem Komma. Die Spalte fasst also Werte im Bereich von -99999999.99 bis 99999999.99.
Näherungswerte
Gleitkomma-Typen werden für näherungsweise Berechnungen verwendet. PostgreSQL unterstützt zusätzlich die Sonderwerte Infinity, -Infinity und NaN (keine Zahl).