Exkurs - Nullwerte und Wertebereich
Undefinierte Werte
In den Übungen war eine Aufgabe zu finden, bei denen nach den Orten am Rhein in Rheinland-Pfalz gesucht werden sollte. Die Sortierung erfolgte nach dem Rheinkilometer. Vielleicht ist dir bei der Ausführung des folgenden SQL-Befehls ein Problem aufgefallen:
SELECT ort.Name, stadtfluss.Km
FROM ort, stadtfluss, fluss
WHERE fluss.Name = 'Rhein'
AND fluss.FNR = stadtfluss.FNR
AND stadtfluss.ONR = ort.ONR
AND ort.Landesteil = 'Rheinland-Pfalz'
ORDER BY stadtfluss.Km
In vielen Datensätzen steht für das Attribut Km der Wert NULL
. Dieses ist
aber ein Attribut mit dem Datentyp "Zahl", so dass keine Texte dort erlaubt sind?!
Wenn für ein Attribut kein Wert definiert ist, dann wird der vordefinierte Wert NULL angenommen. Dieser stellt keinen Text dar, sondern ist ein Platzhalter für den undefinierten Wert.
In Bedingungen kann der Wert NULL explizit abgefragt werden,
z.B. WHERE Km IS NULL
bzw.
WHERE Km IS NOT NULL
(für alle Werte, die kein NULL enthalten).
Mache dir klar, warum man nicht den Wert 0 für den Rheinkilometer abspeichern sollte.
Jetzt kannst du den SQL-Befehl oben sicher so verbessern, dass nur noch Orte ausgegeben werden, bei denen der Rheinkilometer angegeben wurde.
Wertebereiche
Warum speichert man eigentlich nicht alles in der Datenbank in Attributen mit dem Datentyp "Text"?
In einem Versuch wurden die Kilometerangaben der stadtfluss-Tabelle einmal als Zahl und einmal als Text in zwei Attributen gespeichert.
Ein SQL-Befehl gibt die Orte an der Mosel aus - einmal nach dem Zahl-Attribut sortiert, einmal nach dem Text-Attribut. Kannst du die seltsame Sortierung im zweiten Bild erklären?
Der Wertebereich eines Attributes hat gravierende Auswirkungen vor allem auf die Sortierung von Datensätzen. So werden Zahlen als "Texte" auch wie diese sortiert (also ist 52 größer als 107, da 5 nach 1 kommt). Eine große Rolle spielt das bei Datumsfeldern. Für Textfelder kann sogar die Art der Sortierung angegeben werden, die sich von Land zu Land unterscheiden kann.
Aufgabe
Recherchiere doch einmal, welche Unterschiede allein die deutschsprechenden Staaten in Bezug auf die alphabetische Sortierung machen!