SQL-Datentypen legen fest, welche Art von Werten eine Spalte speichern darf – Zahlen, Texte, Zeitpunkte oder Binärdaten. Der Typ bestimmt nicht nur den Speicherbedarf, sondern auch, wie Vergleiche, Sortierung und Rechenoperationen funktionieren.

Die wichtigsten Typgruppen

  • Ganzzahlen: TINYINT, SMALLINT, INT und BIGINT speichern ganze Zahlen. INT fasst Werte von etwa −2,1 Milliarden bis +2,1 Milliarden; wer größere Bereiche oder negative IDs braucht, nimmt BIGINT. TINYINT genügt für kleine Zähler wie Statuscodes.
  • Dezimalzahlen: DECIMAL(p,s) beziehungsweise NUMERIC speichern exakte Nachkommawerte – p ist die Gesamtzahl der Stellen, s die Nachkommastellen. Für Geldbeträge ist DECIMAL(10,2) die richtige Wahl. FLOAT/REAL sind dagegen binäre Näherungen und können Rundungsfehler erzeugen.
  • Zeichenketten: CHAR(n) belegt immer die feste Länge n, VARCHAR(n) nur so viel wie nötig. VARCHAR(255) ist der Allrounder für kürzere Texte; lange Inhalte gehören in TEXT (MySQL/MariaDB).
  • Datum und Zeit: DATE speichert nur das Datum, TIME nur die Uhrzeit, DATETIME/TIMESTAMP beides. PostgreSQL unterscheidet zusätzlich, ob eine Zeitzone gespeichert wird (TIMESTAMPTZ).
  • Wahrheitswerte: BOOLEAN ist in PostgreSQL ein echter Typ; MySQL/MariaDB bilden ihn als TINYINT(1) mit 0/1 ab.
  • Binärdaten und mehr: BLOB/BINARY für Dateien, JSON für strukturierte Dokumente, UUID für global eindeutige Schlüssel, ENUM für feste Wertelisten.

So wählen Sie richtig

Der kleinste Typ, der alle erwarteten Werte fasst, ist meist der beste: Er spart Speicher und beschleunigt Indizes. Geld niemals in FLOAT legen – Rundungsfehler führen zu falschen Summen. Für optionale Felder erlaubt die Spalte NULL (mehr dazu unter SQL NULL); wer jeden Wert braucht, setzt ein NOT NULL-Constraint.

Beim Anlegen einer Tabelle schreiben Sie den Typ direkt hinter den Spaltennamen – die Grundlagen zeigt SQL CREATE TABLE, den passenden Gesamtaufbau das Datenbankschema. Wer mit Tabellen und Abfragen beginnen möchte, startet bei den SQL-Grundlagen.

Verwandte Grundlagen: SQL Temporäre Tabelle, SQL TRUNCATE.