SQL - Die Sprache der relationalen Datenbanken
3. Einfache SQL-Anweisungen
3.2 SQL-Datentypen

SQL-Datentypen, eine Übersicht

Wie bei jeder anderen Programmiersprache kommt man auch bei SQL nicht darum herum, sich Gedanken über Datentypen zu machen. Im Gegenteil, da es bei SQL generell um das Speichern von Daten geht, kommt natürlich den Datentypen eine überragende Bedeutung zu.
 
 
Definition im Lehrtext
Definition
Datentypen sind so etwas wie eine Beschreibung des Formats der Daten, die in den einzelnen Spalten einer Tabelle abgelegt werden können. Bestimmte Spalten speichern z.B. nur das Datum eines Vorgangs. In diesem Falle wäre es nicht sinnvoll, wenn man für diese Einträge genau so viel Speicherplatz vorhalten würde wie für Fotos oder große Texte. Außerdem können diese Spalten dann tatsächlich nur Datumswerte aufnehmen, was natürlich hilft, falsche Einträge zu verhindern.
 
 
Im Folgenden werden wir Ihnen die wichtigsten SQL-Datentypen vorstellen. Generell muss man zwischen den Datentypen des SQL:2008-ISO-Standards und deren Implementierung in DBMS unterscheiden. Wir möchten Ihnen den ISO-Standard und die Implementierungen in MySQL 5.5 und Oracle 11g zeigen.
 
 
SQL:2008 unterscheidet grundsätzlich zwischen drei Arten von Datentypen:
 
  • predefined data types
  • constructed types
  • user-defined types
 
 
Wichtiger Hinweis im Lehrtext
Hinweis
Die Datentypen constructed types und user defined types werden für die objektorientierten Erweiterungen des SQL-Standards benötigt und sind nicht Gegenstand dieses Kurses. Wenn Sie dieses Thema vertiefen möchten, empfehlen wir Ihnen weiterführende Literatur  [15]. Wir werden uns in diesem Kurs nur mit den vordefinierten Datentypen (predefined data types) beschäftigen, die wir deshalb im Folgenden auch allgemein als Datentypen bezeichnen.
 
Der SQL:2008-Standard unterscheidet zwischen den folgenden Gruppen von Datentypen:
 
  • character string types (Zeichenkettentypen)
  • binary string types (Binäre Zeichenkettentypen)
  • large object string types (Große Zeichenkettenobjekttypen)
  • exact numeric types (Exakte numerische Typen)
  • approximate numeric types (Genäherte numerische Typen)
  • time types (Zeittypen)
  • timestamp types (Zeitstempeltypen)
  • datetime types (Zeit- und Datumstypen)
  • interval types (Intervalltypen)
 
 
Wir werden in diesem Kurs auf folgende Typen nicht weiter eingehen:
 
  • binary string types (Binäre Zeichenkettentypen)
  • large object string types (Große Zeichenkettenobjekttypen)
  • interval types (Intervalltypen)
 
Die Verwendung dieser Typen ist ein eher fortgeschrittenes Thema.
 
 
Außerdem gibt es den Boolschen Datentyp BOOLEAN, der keiner Gruppe zugeordnet ist. Im SQL:1999-Standard gab es noch zwei Datentypen für die Annahme von Bitstrings (Aneinanderreihung von Bits wie z.B.: "10001111001"), die aber mangels Implementierung in bestehenden DBMS aus dem SQL:2003-Standard gestrichen wurden. Die datetimes types sind ein Oberbegriff und fassen time types, datetime types und den einzelnen Datentyp DATE zusammen.
 
Zwar sind die Datentypen vor allem bei der Definition von Tabellen wichtig, aber auch bei einer Tabellen-Abfrage muss man sich Gedanken über die Rückgabewerte machen. Das gilt natürlich besonders für Abfragen, die in Anwendungsprogramme integriert bzw. deren Werte an ein Anwendungsprogramm übergeben werden sollen.