Welche SQL-Datentypen gibt es?

Zuletzt aktualisiert: 05.04.2023

Jede Spalte einer Tabelle kann nur Werte eines bestimmten Datentyps speichern. Verschiedene DBMS bieten unterschiedliche Datentypen an, Strings (Zeichen und Zeichenketten) und Zahlen verschiedener Länge und Genauigkeit sind jedoch immer verfügbar.

Datentypen definieren neben der Menge der möglichen Werte auch die Operationen auf die Werte.

Welche String-Datentypen gibt es?

CHARACTER [ ( length ) ] 			(Abkürzung: CHAR)

CHAR( n ) beinhaltet eine Zeichenkette fester Länge mit n Zeichen. Wird keine Länge angegeben, wird 1 angenommen. Daten, die in einer Spalte mit diesem Datentyp gespeichert werden, werden mit Leerzeichen bis zur Länge n aufgefüllt. Somit wird immer Speicher für n Zeichen benötigt. Variiert die Länge der Daten stark, sollte VARCHAR verwendet werden.

CHARACTER VARYING [ ( length ) ] 	(Abkürzung: VARCHAR)

Beispiel: ‘Fernstudium”s Adresse’

VARCHAR beinhaltet Zeichenketten variabler Länge mit bis zu n Zeichen. Es wird nur Speicherplatz für die tatsächliche Länge der Zeichenkette benötigt. Die maximale Länge n dient als Beschränkung, beeinflusst aber normalerweise das Dateiformat auf der Festplatte nicht.

NATIONAL CHARACTER [ ( length ) ] 	(Abkürzung: NCHAR)
NCHAR VARYING [ ( length ) ]

NCHAR und NCHAR VARYING beinhalten wie CHAR und VARCHAR Zeichenketten fixer oder variabler Länge mit bis zu n Zeichen. Die Zeichen werden allerdings aus dem Fremdsprachen-Zeichensatz der ISO bezogen.

BIT [ ( length ) ]
BIT VARYING [ ( length ) ]

BIT-Ausdrücke bzw. BIT-Strings bestehen aus einem Bit oder aus einer Reihe von Bits. Jeder einzelne Wert muss entweder 1 (True) oder 0 (False) sein.

Welche numerische Datentypen gibt es?

NUMERIC [ ( precision [ , scale] ) ]

NUMERIC (p, s) kann vorzeichenbehaftete Zahlen mit insgesamt p Ziffern und s Ziffern hinter dem Komma beinhalten. Dies wird auch Festkommazahl/Fixpunktzahl genannt, da das Komma immer an der gleichen Stelle steht (im Gegensatz zu Gleitkommazahlen), z.B. erlaubt NUMERIC(3,1) die Werte -99.9 bis 99.9.

DECIMAL [ ( precision [ , scale ] ) ]		 (Abkürzung: DEC)

Beispiele: 17.0, -42.7

DECIMAL (p, s) ist fast das Gleiche wie NUMERIC(p,s), allerdings sind hier sind größere Wertemengen möglich. Z.B. muss ein DBMS bei NUMERIC(1) einen Fehler ausgeben, wenn man versucht, 10 einzufügen.

INTEGER 						(Abkürzung: INT)

Beispiele: 17, -42

INTEGER bezeichnet eine vorzeichenbehaftete ganze Zahl, dezimal oder binär gespeichert, der Wertebereich ist implementierungsabhängig. Typisch werden 32 Bit-Binärzahlen im Wertebereich -2147483648 (−231) … +2147483647 (231−1) verwendet

SMALLINT						
(wie INT, nur kleinerer Wertebereich)
FLOAT [ ( precision ) ]
Beispiele: 1.7E1, -4.27E1

FLOAT(p) bezeichnet eine Gleitkommazahl (M * 10E) mit mindestens p Bits Präzision für M (−1 < M < +1).

REAL
DOUBLE PRECISION

REAL und DOUBLE PRECISION sind Abkürzungen für FLOAT(p) mit implementierungsabhängigen Werten für p.

Welche Datums-/Zeitangaben gibt es?

DATEBeispiele: ‘2012-11-01’ oder ‘11/01/2012’
TIMEBeispiele: ’15:20:12’ oder ‘3:20:12 PM’
TIMESTAMPBeipsiele: ‘2012-11-01-15.20.12’
TIME WITH TIME ZONE
TIMESTAMP WITH TIME ZONE
INTERVAL
(für Datums- und Zeitintervalle)

Was ist der NULL-Wert?

SQL bietet einen vordefinierten, universellen Nullwert NULL an, um fehlende Informationen einheitlich zu repräsentieren. Nullwerte können sehr unterschiedlich interpretiert werden. Mögliche Interpretationen sind:

  • Ein Wert existiert, ist aber zurzeit unbekannt.
  • Es ist bekannt, dass in dieser Zeile kein Wert in der fraglichen Spalte existiert.
  • Es ist nicht bekannt, ob ein Wert existiert bzw. wenn ja, wie er lautet.

Die intendierte Interpretation von NULL in SQL ist: Ein Wert existiert, ist aber (zurzeit)  unbekannt. NULL hat selbst keinen Typ, übernimmt somit stets den Typ der jeweiligen Spalte. NULL darf in vielen Fällen aber nicht wie ein Wert genutzt werden, z.B.

  • NULL darf nicht als Operand einer Funktion auftreten (z.B. X+NULL)
  • NULL darf nicht in Vergleichsbedingungen stehen (z.B. X=NULL)

Zum Testen, ob eine Spalte NULL (= noch kein Wert) enthält, gibt es eine spezielle Syntax:

X IS NULL
X IS NOT NULL

Welche SQL-Ausdrücke gibt es?

Ausdrücke (engl.: value expressions) sind jene Abschnitte einer DML- oder DRL-Anweisung, die zwei oder mehrere Werte miteinander kombinieren. Es gibt mehrere Ausdrücke, die den verschiedenen Datentypen entsprechen.

Numerische Ausdrücke

Numerische Werte können mit den Operatoren für die Addition (+), die Subtraktion (-), die Multiplikation (*) und die Division (/) verknüpft werden.

Beispiele:

12 – 7
15/3 – 4
6 * (8 + 2)

Stringausdrücke

Stringausdrücke können einen Verkettungsoperator enthalten. Damit werden zwei oder mehrere Strings zu einem einzigen verknüpft.

Beispiele:

'Erich' || 'Freitag'       ergibt ‚ErichFreitag‘
PLZ || ‚ ‚ || ORT          ergibt PLZ ORT (d.h. die Werte der
                           Spalten PLZ und ORT vom Typ String mit einem 
                           Leerzeichen dazwischen)             

Datum-, Zeit- und Intervall-Ausdrücke

Daten vom Typ DATE, TIME, TIMESTAMP und INTERVAL können in Datum-/Zeit-Ausdrücken verwendet werden. Das Ergebnis ist immer ein Ausdruck für Datums- und Zeitangaben. Zusätzlich kann ein Intervall von einem Datums- und Zeitwert abgezogen oder zu einem Datums- und Zeitwert hinzugefügt werden. Dabei lassen sich auch Zeitzonen-Informationen festlegen.

Beispiele:

Fälligkeit + INTERVAL ‚14‘ DAY
TIME ‚17:20:33‘ AT LOCAL

Boolesche Ausdrücke

Ein boolescher Ausdruck testet den Wahrheitswert eines Prädikats. Der Test kann mit dem Schlüsselwort NOT umgekehrt werden.

Beispiele:

(Kurs = Datenbanksysteme) IS TRUE
NOT (Land = Deutschland)

    👉 Dir gefällt dieser Beitrag?
    Success! Thanks for Your Request.
    Error! Please Try Again.