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 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.
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:
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:
Will man alle Informationen, die in einer Tabelle gespeichert sind, sehen:
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:
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
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:
Das Ergbnis hier:
Gehalt |
---|
120000 |
Man kann Kriterien endlos miteinander verknüpfen, und damit sehr detaillierte und aussagekräftige Abfragen durchführen. Beispiel:
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.
Das Resultat dieser Anfrage lautet also:
Nachname | Vorname |
---|---|
Wolf | Markus |
Schmidt | Werner |
Für Zahlenwerte gibt man ein Zahlenintervall mit BETWEEN an:
Das Resultat dieser Anfrage mit BETWEEN lautet:
Nachname | Vorname |
---|---|
Wolf | Markus |