CodeGym /Kurse /SQL SELF /Numerische Datentypen: INTEGER, NUME...

Numerische Datentypen: INTEGER, NUMERIC, FLOAT

SQL SELF
Level 15 , Lektion 1
Verfügbar

Heute quatschen wir über numerische Datentypen in PostgreSQL. Wenn du dich schon mal gefragt hast, wie man die Zahl "42", Finanzberechnungen oder vielleicht Millisekunden speichert – bist du hier genau richtig. Lass uns klären, welcher Typ für welche Aufgabe passt, damit du und deine Daten sich wohlfühlen.

Numerische Datentypen in PostgreSQL sind in drei Hauptgruppen unterteilt:

  1. Ganze Zahlen (INTEGER): Zum Speichern von Zahlen ohne Nachkommastellen. Das sind so Zahlen wie 1, 42, -7.
  2. Exakte Zahlen (NUMERIC): Für Zahlen mit fester Anzahl an Nachkommastellen. Super für Finanzberechnungen, wo Genauigkeit wichtiger als alles andere ist.
  3. Gleitkommazahlen (REAL): Für Zahlen, die richtig groß oder winzig klein sein können. Sie sind weniger genau als NUMERIC, aber perfekt für wissenschaftliche Berechnungen.

Typ INTEGER

INTEGER ist der Datentyp für ganze Zahlen. Perfekt, wenn du Zahlen ohne Nachkommastellen speichern willst. PostgreSQL bietet gleich drei Varianten von INTEGER, damit du verschiedene Wertebereiche abdecken kannst:

  • SMALLINT: Kleiner Ganzzahl-Typ. Wertebereich: von -32.768 bis 32.767.
  • INTEGER (oder INT): Standard-Ganzzahl-Typ. Wertebereich: von -2.147.483.648 bis 2.147.483.647.
  • BIGINT: Für richtig große Zahlen. Wertebereich: von -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807.

Stell dir vor, wir haben eine Tabelle students, in der Infos über Studierende gespeichert sind: ihr Name, Alter und die Anzahl der gesammelten Credits (Leistungspunkte):

id name age credits
1 Otto Nate 21 30
2 Maria Chi 22 45
3 Peter Val 20 60
4 Anna Song 23 50
5 Sophie Zhang 21 35

Jetzt machen wir einen einfachen SQL-Query, um die Liste der Studierenden mit ihrem Alter und ihren Credits zu bekommen:

SELECT name, age, credits
FROM students;

Ergebnis:

name age credits
Otto Nate 21 30
Maria Chi 22 45
Peter Val 20 60
Anna Song 23 50
Sophie Zhang 21 35

Wann solltest du INTEGER verwenden?

  • Speichern von IDs (id, Bestellnummern).
  • Speichern von Mengen (z.B. Anzahl der Produkte im Lager, Anzahl der Studierenden).

Typ NUMERIC

NUMERIC ist der Datentyp für exakte Zahlen mit fester Nachkommastelle. Wenn du sowas wie 123.456 speichern willst und ein Fehler an der Nachkommastelle deinen Ruf (oder Geld) kostet, nimm NUMERIC.

So deklarierst du das: NUMERIC(precision, scale), wobei:

  • precision – die Gesamtanzahl der Ziffern (vor und nach dem Komma).
  • scale – die Anzahl der Ziffern nach dem Komma.

Zum Beispiel erlaubt NUMERIC(6, 2) Zahlen mit maximal 6 Ziffern, davon 2 nach dem Komma.

Lass uns eine Tabelle für Finanztransaktionen anlegen:

id description amount
1 Zahlung für Studium 2345.67
2 Monatliches Stipendium 500.00
3 Laborgebühr 145.99
4 Bibliotheksstrafe 12.75
5 Konferenzanmeldung 320.50

Jetzt zeigen wir die Transaktionen an:

SELECT description, amount
FROM transactions;

Ergebnis:

description amount
Zahlung für Studium 2345.67
Monatliches Stipendium 500.00
Laborgebühr 145.99
Bibliotheksstrafe 12.75
Konferenzanmeldung 320.50

Wann solltest du NUMERIC verwenden?

  • Finanzberechnungen (Produktpreise, Gehälter).
  • Speichern von exakten Messwerten (Gewicht, Länge).

Tabelle measurements

id mass - REAL height - REAL
1 70.5 1.83
2 64.2 1.75
3 82.3 1.92
4 55.0 1.60

Jetzt zeigen wir die Werte an:

SELECT mass, height
FROM measurements;

Ergebnis:

mass height
70.5 1.83
64.2 1.75
82.3 1.92
55.0 1.60

Wann solltest du REAL verwenden?

  • Wissenschaftliche Berechnungen (Atommasse, Entfernung zum Mond).
  • Datenmodellierung, wo kleine Ungenauigkeiten okay sind.

Vergleich der numerischen Typen: Wann was nehmen?

Datentyp Wertebereich Genauigkeit Beispielanwendungen
SMALLINT -32.768 bis 32.767 Ganze Zahlen Kleine Zahlen (Alter, Bewertungen).
INTEGER -2.147.483.648 bis 2.147.483.647 Ganze Zahlen IDs, Mengen.
BIGINT -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 Ganze Zahlen Sehr große Zahlen.
NUMERIC Hängt von precision und scale ab Exakte Dezimalzahlen Finanzen, Messungen.
REAL Ungefähr 6 Dezimalstellen Gleitkommazahl Ungefähre oder wissenschaftliche Daten.
DOUBLE PRECISION Ungefähr 15 Dezimalstellen Hochpräzise Gleitkommazahl Wissenschaft, Forschung.

Aliase

In PostgreSQL haben viele numerische Typen Aliase – das sind alternative Namen für Typen, die sich gleich verhalten, aber die Lesbarkeit oder Kompatibilität mit anderen DBMS verbessern.

Hier ein kurzes und verständliches Cheat-Sheet zu Aliase der numerischen Typen in PostgreSQL:

Aliase für Ganzzahl-Typen

Alias Echter Typ Größe Wertebereich
INT INTEGER 4 Byte −2.147.483.648 bis 2.147.483.647
INT4 INTEGER 4 Byte (veralteter Alias)
SMALLINT SMALLINT 2 Byte −32.768 bis 32.767
INT2 SMALLINT 2 Byte
BIGINT BIGINT 8 Byte −9 Quintillionen bis +9 Quintillionen
INT8 BIGINT 8 Byte

Aliase für exakte Zahlen

Alias Echter Typ Zweck
DEC NUMERIC SQL-Standard-Synonym
DECIMAL NUMERIC Dasselbe

Aliase für Gleitkommazahlen

Alias Echter Typ Genauigkeit
FLOAT DOUBLE PRECISION ~15 Stellen (Standard)
FLOAT(24) REAL ~6 Stellen
FLOAT(53) DOUBLE PRECISION ~15 Stellen
FLOAT8 DOUBLE PRECISION Veralteter Alias
FLOAT4 REAL Veralteter Alias

Typische Fehler

Beim Arbeiten mit numerischen Typen kann man auf ein paar Stolperfallen treffen:

Zu kleiner Datentyp gewählt. Wenn du für das Alter von Menschen SMALLINT nimmst, liegst du falsch. Dem Roboter aus der "Matrix", der Millionen Jahre alt ist, gefällt das nicht.

Datenverlust durch Rundung. Wenn du REAL für Finanzberechnungen verwendest, verlierst du Centbeträge. Und dann auch das Vertrauen der Kunden.

Vergleich verschiedener Typen. Wenn du INTEGER und REAL vergleichst, bekommst du manchmal unerwartete Ergebnisse wegen der Eigenheiten von Gleitkommazahlen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION