Abfragen über Structured Query Language (SQL)...

Grundsätzliches...

"Abfragen" bedeutet, dass man sich die Daten einer Datenbank nach bestimmten Kriterien anzeigen lässt. So möchten wir beispielsweise bei unserer CD-Sammlung wissen, welche Lieder Max Mustermann singt und auf welcher CD sie sich befinden. Diese Abfrage kann man in einem eigens dafür bereitgestellten SQL-Editor formulieren und dann ausführen lassen. Wenn man Datenbanktabellen abfragt, erhält man als Ergebnis wieder eine Tabelle, welche die gewünschten Daten enthält.

In der Praxis werden alle geforderten Abfragen vom Datenbankentwickler fix und fertig erstellt, da die Sachbearbeiterin, die dann diese DB nutzt, von dieser Materie meist nicht viel Ahnung hat (es sei denn, sie hat in Info gut aufgepasst ;-).

Aufbau einer SQL-Abfrage...

Eine SQL-Abfrage besteht im Wesentlichen aus wenigen (englischen) Schlüsselwörtern und ist folgendermaßen aufgebaut:

SELECTFeldname_1, Feldname_2,...
FROMTabellenname
WHEREBedingung

Frei(!) übersetzt könnte man es so ausdrücken:

SELECTwähle folgende Felder aus...
FROMvon der angebenen Tabelle...
WHEREwo die Feldinhalte folgende Bedingung erfüllen...

Bei der Erstellung einer SQL-Abfrage solltest du also vorher folgende Überlegungen anstellen:

  1. Welche Felder sollen angezeigt werden?
  2. Welche Tabelle wird abgefragt?
  3. Wie lautet das Auswahlkriterium / die Bedingung?

Beispielabfragen CD-Sammlung...

Die folgenden Beispielabfragen kannst du dir fix und fertig in der Beispieldatenbank anschauen und die Ergebnistabellen nachvollziehen. Wenn du dir dort allerdings die Abfrage in der SQL-Ansicht anschaust, könnte das etwas Verwirrung stiften, da OpenOffice genau wie MS Office seinen "eigenen" SQL-Dialekt verwendet, der nicht immer ganz nachvollziebar ist. Hinter dem Namen der Abfrage steht in Klammern die Menge der Ergebnisdatensätze.

Um die Abfragen besser nachvollziehen zu können, solltest du dich vorher unbedingt nochmal mit den Tabellen unserer Beispieldatenbank vertraut machen.

sql_abfrage_1 (5)

Die Titel aller CDs, die vor dem Jahr 2008 erschienen sind.

SELECTcd_titel
FROMcd
WHEREersch_jahr<2008

Das bedarf wohl keiner Erläuterung...

sql_abfrage_2 (3)

Die Namen aller Interpreten, die aus Deutschland stammen.

SELECTname
FROMinterpret
WHEREland='Deutschland'

Bei der Bedingung steht das Wort Deutschland in einfachen Hochkommas, da es sich um einen Wert vom Datentyp VARCHAR (Zeichenkette) handelt. Werte von numerischen Datentypen (Zahlen) wie in sql_abfrage_1 dürfen dagegen nicht zwischen einfache Hochkommas gesetzt werden.

sql_abfrage_3 (4)

Die Titel aller englischsprachigen Lieder, deren Länge unter 3:15 min. liegt.

SELECTlied_titel
FROMlied
WHERElied_sprache='englisch' AND lied_dauer<3.15

Natürlich kann man auch mehrere Bedingungen stellen - die werden dann mit AND (UND) bzw. OR (ODER) verknüpft. Bei dem Wert für die Lieddauer fällt auf, dass statt 3,15 - wie in unserer Datenbanktabelle - 3.15 steht. SQL verlangt bei Dezimalzahlen nämlich den Punkt als Trennzeichen.

sql_abfrage_4 (5)

Die Titel und zugehörigen CD-Nummern aller Lieder, die reine Instrumentalstücke (also ohne Gesang) sind.

SELECTlied_titel, cd_nr
FROMlied
WHERElied_sprache IS NULL

Der Wert NULL (sprich: nall wie im Englischen, um Missverständnisse zu vermeiden) steht in SQL für nicht vorhandene Werte. Das heißt, dass in dem entsprechenden Datenfeld kein Wert steht. Das kommt in unserer Datenbank vor, wenn bei einem Lied keine Sprache angegeben ist und es sich somit um einen Instrumentaltitel handeln muss.
Es wäre falsch, in diesem Fall einfach 0 an dieser Stelle in die Tabelle einzutragen, denn das ist etwas völlig anderes. Um zu prüfen, ob ein Datensatz in einer Spalte keinen Attributwert hat, muss der Operator IS NULL verwendet werden.     [Vgl. 2]

Praktische Umsetzung...

Wir wählen in unserem DBMS die Abfragen aus und starten mit "Abfrage in SQL-Ansicht erstellen...":
Danach geben wir die Abfrage ein und führen sie aus:



(...und warten auf die Fehlermeldung ;-)
Nach erfolgreicher Ausführung wird die Abfrage geschlossen und wir werden aufgefordert, diese zu speichern:

Du siehst, dass die SQL-Syntax trotz einiger kleiner "Stolperfallen" nicht all zu schwer ist. Im nächsten Kapitel wirst du lernen, wie man sich Abfragen einfach "zusammenklicken" kann. Das wird dir wesentlich sympatischer erscheinen - ABER VORSICHT - auch dort gibt es je nach DBMS einige "Klippen", die es zu umschiffen gilt...