Eine Spalte in einer relationalen Tabelle wird folgendermaßen definiert:
Jede Spalte in einer Tabelle muß einen für diese Tabelle eindeutigen Namen haben. Einzelheiten zu den Spaltennamen finden Sie in Anhang A, Namenskonventionen.
Der Datentyp und die Länge legen den Typ und die maximale Länge der Daten fest, die als Werte der Spalte gültig sind. Datentypen können aus den im Datenbankmanager vordefinierten Typen ausgewählt oder vom Benutzer als sogenannte benutzerdefinierte Typen selbst erstellt werden. Informationen über die von DB2 bereitgestellten Datentypen und über benutzerdefinierte Typen finden Sie im Handbuch SQL Reference.
Kategorien von Datentypen sind zum Beispiel: numerische Daten, Zeichenfolge, Doppelbytezeichenfolge (oder Grafikzeichenfolge), Datum/Uhrzeit und Binärzeichenfolge.
Der Datentyp großes Objekt (LOB) unterstützt Multimedia-Objekte wie Dokumente, Video-, Abbild- und Tondaten. Diese Objekte werden mit Hilfe der folgenden Datentypen implementiert:
Weitere Einzelheiten zur Unterstützung großer Objekte (LOBs) finden Sie im Handbuch SQL Reference.
Ein benutzerdefinierter Datentyp (UDT - User-Defined Type) ist ein Datentyp, der von einem vorhandenen Typ abgeleitet ist. Es können Datentypen definiert werden, die von vorhandenen Typen abgeleitet sind und über ähnliche Merkmale wie die vorhandenen Typen verfügen, die jedoch als separat und nicht kompatibel behandelt werden sollen.
Ein strukturierter Typ ist ein benutzerdefinierter Typ, dessen Struktur in der Datenbank definiert ist. Er enthält eine Reihe benannter Attribute, die jeweils über einen Datentyp verfügen. Ein strukturierter Typ kann als untergeordneter Typ eines anderen strukturierten Typs definiert sein, der dementsprechend als zugehöriger übergeordneter Typ bezeichnet wird. Ein untergeordneter Typ übernimmt alle Attribute des dazugehörigen übergeordneten Typs und kann zusätzlich über weitere Attribute verfügen. Die Gruppe strukturierter Typen, die zu einem gemeinsamen übergeordneten Typ gehören, wird als Typhierarchie bezeichnet. Ein übergeordneter Typ, der keinem anderen Typ untergeordnet ist, wird als Stammtyp der Typhierarchie bezeichnet.
Ein strukturierter Typ kann als Typ einer Tabelle oder einer Sicht verwendet werden. Die Namen und Datentypen der Attribute der strukturierten Typen werden zusammen mit der Objektkennung als Namen und Datentypen für die Spalten dieser typisierten Tabelle oder typisierten Sicht verwendet. Zeilen einer typisierten Tabelle oder typisierten Sicht können als Darstellung von Exemplaren des strukturierten Typs verstanden werden.
Ein strukturierter Typ kann nicht als Datentyp für eine Spalte einer Tabelle oder Sicht verwendet werden. Außerdem besteht keine Möglichkeit, ein vollständiges Exemplar eines strukturierten Typs in eine Host-Variable eines Anwendungsprogramms zu übernehmen.
Ein Referenztyp ist ein Begleittyp zum strukturierten Typ. Wie ein einzigartiger Datentyp ist auch der Referenztyp ein Skalartyp, dessen Darstellung mit der Darstellung eines integrierten Datentyps identisch ist. Diese Darstellung wird von allen Typen der Typhierarchie gemeinsam benutzt. Die Darstellung des Referenztyps wird beim Erstellen des Stammtyps einer Typhierarchie definiert. Bei Verwendung eines Referenztyps wird ein strukturierter Typ als Parameter des Typs angegeben. Dieser Parameter wird als Zieltyp der Referenz bezeichnet.
Das Ziel einer Referenz ist immer eine Zeile in einer typisierten Tabelle oder Sicht. Bei Verwendung eines Referenztyps kann ein Bereich (Scope) definiert werden. Der Bereich identifiziert eine Tabelle (die Zieltabelle) oder eine Sicht (die Zielsicht), die die Zielzeile eines Referenzwerts enthält. Die Zieltabelle oder -sicht muß denselben Typ aufweisen wie der Zieltyp des Referenztyps. Ein Exemplar eines Referenztyps mit Bereich identifiziert eindeutig eine Zeile in einer typisierten Tabelle oder Sicht, die als Zielzeile dieses Referenztyps bezeichnet wird.
Eine benutzerdefinierte Funktion (UDF - User-Defined Function) kann zu zahlreichen Zwecken verwendet werden, darunter auch zum Aufrufen von Routinen, die Vergleiche oder Umwandlungen zwischen benutzerdefinierten Datentypen ermöglichen. Benutzerdefinierte Funktionen erweitern und ergänzen die Unterstützung, die von integrierten SQL-Funktionen zur Verfügung gestellt wird, und können überall dort verwendet werden, wo auch integrierte Funktionen verwendet werden können. Es gibt zwei Arten benutzerdefinierter Funktionen:
Beispielsweise gibt es die beiden numerischen Datentypen der europäischen Schuhgröße und der amerikanischen Schuhgröße. Beide Typen stellen Schuhgrößen dar, aber sie sind nicht miteinander kompatibel, da die Maßeinheiten verschieden sind und nicht direkt miteinander verglichen werden können. Eine benutzerdefinierte Funktion kann aufgerufen werden, um die Maßangaben von einer Schuhgröße in eine andere umzuwandeln.
Weitere Einzelheiten zur Vertiefung der benutzerdefinierten und strukturierten Datentypen sowie der Referenztypen und benutzerdefinierten Funktionen finden Sie im Handbuch SQL Reference.
Einige Spalten können nicht in allen Zeilen sinnvolle Werte enthalten. Dafür kann es folgende Gründe geben:
Zum Beispiel kann eine Spalte, die die Mittelinitialen von Mitarbeiternamen enthält, keinen sinnvollen Wert enthalten, wenn der in der Zeile eingetragene Mitarbeiter keine Mittelinitiale hat.
Ein Beispiel wäre die Spalte MGRNO (Managernummer), die vorübergehend keine gültige Managernummer enthält, weil der vorige Manager versetzt wurde, aber bislang noch kein neuer Manager bestimmt wurde.
In beiden Fällen haben Sie die Wahl, einen Nullwert (einen speziellen Wert, der angibt, daß der Spaltenwert unbekannt oder unzutreffend ist) zuzulassen oder einen vom Nullwert abweichenden Standardwert durch den Datenbankmanager oder die Anwendung zuordnen zu lassen.
Einzelheiten zu Nullwerten (NULL Values) und Standardwerten (Default Values) finden Sie im Handbuch SQL Reference.