Erste Seite Zurück Weiter Letzte Seite Übersicht Grafik
SELECT ... WHERE
WHERE – Klausel wählt Datensätze einer Tabelle aus:
SELECT <Spaltenliste>
FROM {<Tabellenliste> | <Joinkonstrukt>}
WHERE <Bedingung>
Die Bedingung...
...entscheidet, welche Datensätze das Ergebnis umfasst
...besteht praktisch immer aus einem oder mehreren Vergleichen
... ist aus Operatoren und Werten zusammengesetzt
... wird für jeden Datensatz ausgewertet
... liefert TRUE oder FALSE (oder NULL)
Notizen:
Mit der WHERE – Klausel werden Bedingungen gebildet, die Datensätze einer Tabelle auswählen.
Eine Bedingung ist dabei ein sog. „Boolescher Ausdruck“ (einer der immer nur WAHR oder FALSCH als Ergebnis liefert). Man kann sich das so vorstellen, dass jeder einzelne Datensatz gegen die Bedingung verglichen wird. Alle Datensätze, für die der Ausdruck wahr wird, werden in das Ergebnis aufgenommen, die anderen werden verworfen.
Leider kann man wenig Vorhersagen machen, ob ein Statement effizient abgearbeitet werden wird. Das liegt daran, dass SQL keine „imperative“ Programmiersprache ist, bei der man exakte Anweisungen erteilt, was gemacht werden soll, sondern eine „funktionale“, bei der man nur formuliert, welches Ergebnis man haben will. Alles Weitere ist dem jeweiligen „Optimierer“ („Optimizer“) des Datenbanksystems überlassen: er entscheidet z.B: in welcher Reihenfolge Bedingungen ausgewertet werden (natürlich im Rahmen des Zulässigen), um zu einem bestimmten Ergebnis zu kommen. Das wiederum hat zur Folge, dass für das Tunen einer Datenbank etwas Erfahrung, Fingerspitzengefühl und manchmal auch ein Quäntchen Glück notwendig sind. Man kann nämlich z.T. durch das Umstrukturieren von Daten, durch das Erstellen von Indizes und ähnlichen Massnahmen dem Optimierer stark helfen bzw. sogar die Voraussetzungen schaffen, dass dieser arbeiten kann.
Das soll an anderer Stelle besprochen werden, wir wenden uns der Bildung einer WHERE-Klausel zu:
Als Bedingung benötigen wir also eine Konstruktion, die sich zu „wahr“ oder „falsch“ auswerten lässt. Auch dieses Problem ist in so gut wie allen Programmierumgebungen gleichartig gelöst: Vergleiche haben nämlich diese Eigenschaft: Ist eine Sache dasselbe wie eine andere Sache, z.B.: Ist der Inhalt der Spalte „Nummer“ das Gleiche wie die Zahl „27“?
Bedingungen sind also zusammengesetzt aus Spaltennamen, Operatoren und Werten.