Grundkurs SQL

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