Lern-Fabrik

Einführung in SQL - Datenbankabfragen

Grundlagen

Die Structured Query Language, kurz SQL, wird verwendet, um relationale Datenbanken anzusprechen. SQL ist dabei sehr umfangreich und umfasst nicht nur Anweisungen und Befehle zum Abfragen der Daten - wie man aus dem Namen schliessen könnte - sondern auch die Möglichkeit, Daten zu ändern und die Datenbank selbst zu beschreiben. Somit kann man mit SQL so ziemlich alle Aufgaben erledigen, die zur Administration und Benutzung von Datenbanken anfallen. In einer relationalen Datenbank werden Informationen in Tabellen gespeichert. Jede Tabelle speichert zu unterschiedlichen Datensätzen (horizontal) diverse Informationen (vertikal). Ein Beispiel für eine Datentabelle:

Mitarbeiter

Mitarbeiter ID Nachname Vorname Standort Gehalt
123 Wolf Markus Böblingen 30000
456 Simpson Homer Springfield 120000
789 Schmidt Werner Bonn 75000

Um Daten in diese Tabelle einzugeben, zu ändern, zu löschen und abzufragen, kann man nun SQL verwenden. Wir beginnen an der Stelle mit einfachen Abfragen über eine Tabelle, Abfragen mit Kriterien und schliesslich Abfragen über mehrere Tabellen, so genannte Joins.

Abfragen mit SELECT

Eine Abfrage dient dem Suchen und Anzeigen von vorhandenen Daten. Dies geschieht in SQL immer mit dem SELECT-Befehl. Wir wollen aus der Beispieltabelle "Mitarbeiter" den Namen und Standort aller Mitarbeiter erfahren:

SELECT Nachname, Vorname, Standort

FROM Mitarbeiter;

So sieht das Ergebnis aus:

Nachname Vorname Standort
Wolf Markus Böblingen
Simpson Homer Springfield
Schmidt Werner Bonn

Was genau ist hier nun passiert: Wir haben uns alle Mitarbeiter aus der "Mitarbeiter" zur Ansicht ausgewählt, und zwar deren Namen und Standort. Die MitarbeiterNummer (ID) haben wir dabei ausser Acht gelassen. Eine Abfrage funktioniert generell also so:

SELECT SpaltenName, SpaltenName, ...

FROM TabellenName;

Will man alle Informationen, die in einer Tabelle gespeichert sind, sehen:

SELECT *

FROM TabellenName;

SELECT mit Abfragekriterien

Um eine Abfrage durchzuführen, die nicht alle Datensätze in der Tabelle zurückliefert, benötigen wir Abfragekriterien. Anhand dieser Kriterien werden die Datensätze gefiltert. Die allgemeine Form einer Abfrage mit Kriterien:

SELECT SpaltenName,SpaltenName, ...

FROM TabellenName

WHERE Kriterium

Der Aufbau des Kriterienausdrucks leitet sich von der relationalen Algebra ab. Folgende Vergleichsoperatoren gibt es in SQL, um vergleichende Ausdrücke zu bilden:

Operator Beschreibung Beispiel
= Gleich 5 = 5
<> oder != Nicht gleich 5 <> 3
< Kleiner als 3 < 5
> Größer als 5 > 3
<= Kleiner als oder gleich 3 <= 3
>= Größer als oder gleich 5 >= 3

Aus der "Mitarbeiter" werden mit der Abfrage

SELECT Nachname

FROM Mitarbeiter

WHERE Gehalt >= 50000;

die folgenden Datensätze zurückgeliefert:

Nachname
Simpson
Schmidt

Es wurden also alle Mitarbeiter, deren Gehalt gleich oder über 50000 liegt, ausgewählt. Ein anderes Beispiel:

SELECT Gehalt

FROM Mitarbeiter

WHERE Name = ’Simpson’;

Das Ergbnis hier:

Gehalt
120000

Mehrere Kriterien in einer Abfrage

Man kann Kriterien endlos miteinander verknüpfen, und damit sehr detaillierte und aussagekräftige Abfragen durchführen. Beispiel:

SELECT Nachname, Vorname

FROM Mitarbeiter

WHERE Gehalt > 50000 AND Standort != ’Springfield’;

Wie man im Resultat sieht, wäre Homer Simpson aufgrund seines Gehaltes, das grösser als 50000 ist, im Resultat enthalten, allerdings ist sein Standort "Springfield", und der wurde als "nicht"-Kriterium angegeben:

Nachname Vorname
Schmidt Werner

Die beiden Kriterien wurden mit AND verknüpft, das entspricht dem logischen UND. Dann gibt es natürlich auch das logische ODER: OR. Eine andere Möglichkeit, Aussagen miteinander zu verknüpfen, bieten die Schlüsselwörter IN und BETWEEN. IN wird verwendet, um in Spalten, die Zeichenketten beinhalten, eine Menge von möglichen Kriterien anzugeben. Für die folgende SQL-Anfrage werden Nachname und Vorname eines Datensatzes zurückgeliefert, wenn die in der Klammer angegebene Zeichenkette (nach IN) in der Spalte "Standort" des Datensatzes vorhanden ist.

SELECT Nachname, Vorname

FROM Mitarbeiter

WHERE Standort IN (’Böblingen’, ’Bonn’);

Das Resultat dieser Anfrage lautet also:

Nachname Vorname
Wolf Markus
Schmidt Werner

Für Zahlenwerte gibt man ein Zahlenintervall mit BETWEEN an:

SELECT Nachname, Vorname

FROM Mitarbeiter

WHERE Gehalt BETWEEN 20000 AND 50000;

Das Resultat dieser Anfrage mit BETWEEN lautet:

Nachname Vorname
Wolf Markus