4.2 Sortieren von Datensätzen
Es ist Ihnen sicher schon aufgefallen, dass die Zeilen einer Abfrage mal
nach der einen, mal nach der anderen und meistens nach gar keiner der Spalten
sortiert gewesen sind. Solange wir keine Sortierreihenfolge vorgeben, ist
es dem DBMS auch freigestellt, in welcher Reihenfolge die Zeilen übermittelt
werden.
Grundsätzlich werden Datensätze in den Tabellen der Datenbank ohne jegliche
Sortierung abgelegt. Es macht also nichts, wenn sie erst einen Datensatz mit der ID=100
einfügen und dann den Datensatz ID=24.
Mittels der Anweisung ORDER BY
können die Ausgaben
sortiert ausgegeben werden. Die Ausgabe der Tabelle wird zeilenweise umgeordnet,
so dass die Feldwerte der spezifizierten Spalten in aufsteigender bzw. absteigender
Reihenfolge vorzufinden sind.
Dabei kann aufsteigende (0-9, A-Z = ASC
) und
absteigende (9-0, Z-A = DESC
) Sortierreihenfolge verlangt werden.
Voreinstellung bei der ORDER BY
-Anweisung ist ASC
, d.h.
bei gewünschter aufsteigender Sortierung muss ASC
nicht explizit
geschrieben werden.
Die Sortierung kann sowohl auf numerische Datentypen als auch auf Zeichenketten angewandt werden. Zeichenkettensortierung erfolgt lexikographisch (wie im Lexikon). Die Sortierung von Datentypen, welche Datum und Zeit betreffen, wird entsprechend der chronologischen (zeitlichen) Ordnung durchgeführt.
[21]SELECT personal_ID, name, vorname
FROM tbl_mitarbeiter
ORDER BY personal_ID ASC
Mit dieser SQL-Abfrage werden alle Mitarbeiter sortiert in aufsteigender
Reihenfolge (0-9) nach ihrer Personalnummer ausgegeben. Diese Reihenfolge
ändert sich nicht, wenn wir das Wort ASC
weglassen, da die
aufsteigende Reihenfolge immer verwendet wird, wenn nichts anderes festgelegt
ist.
Beachten Sie, dass die Personalnummern Zeichenketten sind. Dies hätte zur Folge,
dass wenn diese ohne führende Null angegeben wären, das System wie folgt sortieren
würde: 1, 10, 11, …, 2, 20, …
Ein Beispiel dafür ist die Tabelle mit den Räumen – sortiert
nach der raum_ID
.
[12]SELECT *
FROM tbl_raum
ORDER BY raum_ID ASC