Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik

SELECT


Notizen:

Die Anweisung Select wird benützt, wenn Daten ausgelesen werden sollen. Das Frontend ist dann für deren Weiterverarbeitung verantwortlich. So kennen wir als – anwendungsunabhängiges - Frontend-Programm bereits zum Beispiel den „Query Analyzer“, der zum Paketumfang des MS SQL Server gehört. Der macht nicht sehr viel mit empfangenen Daten: er zeigt sie lediglich in Tabellen- oder Textform an*). Von diesem Wechsel des Anzeigeformats erfährt der Datenbankserver gar nichts. Das soll wieder das Client/Server-Prinzip verdeutlichen.
Die SELECT Anweisung definiert:
Objekte („Tabellen“, „Sichten“ o.ä.), aus denen Datensätze ausgelesen werden sollen
Spalten, die ins Resultat aufgenommen werden
Bedingungen, die Datensätze erfüllen müssen, um dargestellt zu werden
Gruppierungen
Reihenfolge
Zu diesem Zweck werden so genannte „Klauseln“ benützt, also Befehlsteile, die selbständig keinen Sinn machen, aber im Rahmen eines übergeordneten Befehls eine beabsichtigte Wirkung entfalten. Zur Verdeutlichung: die o.a. Aufgabenstellungen werden durch die Klauseln FROM, WHERE, GROUP BY sowie ORDER BY der Select-Anweisung dargestellt (beachte: das sind keineswegs alle Klauseln, die es bei einem Select-Statement geben kann)
Wir befassen uns in der Folge mit den einzelnen Abschnitten, sprich Klauseln, des Select-Statements. Mit bewusster Absicht gehen wir dabei sehr ausführlich auf die FROM- und die WHERE-Klausel ein: die Kombination dieser beiden wird auch bei den anderen manipulativen Statements Insert, Update & Delete in völlig unveränderter Form wichtig!
Hierbei wird auch deutlich, dass relationale Datenbanksysteme nichts anderes sind als angewandte Algebra (Mengenlehre): Die Relation ist selbst eine Menge von Datensätzen, die Operation, die wir ausführen, ist die Bildung einer Teilmenge. Um die Teilmenge zu bilden, wird ein Gesetz verwandt (die WHERE-Klausel).
*) Anm. zu Query Analyzer (und ähnlichen Programmen): Sehr oft wird zusätzliche Funktionalität angeboten, die dem hier Gesagten zu widersprechen scheint: z.B. das direkte Editieren von Datensätzen im angezeigten Ergebnis. Diese Funktionalität wird zu 100% im Frontend erbracht. Die Datensätze werden mittels select abgefragt und angezeigt. Die Edititerfunktion selbst wird lokal erbracht, editierte Datensätze werden danach mit einem Update, eingefügte mit einem Insert zum Server geschickt. Auch dieses Beispiel macht vielleicht das Client/Server Prinzip etwas deutlicher.