Um große Datenmengen zu verwalten, bieten sich Datenbanken an, da man die Verwaltung der Daten, das Laden und Speichern, das Ändern und Löschen, damit an die Datenbank auslagern kann: Man muss es also nicht selbst programmieren. Das ist zum einen eine Arbeitsersparnis, die für den Einsatz von Datenbanken spricht. Die Frage, die übrig bleibt ist, wie man dann eigentlich mit der Datenbank kommuniziert.
Hier existieren unterschiedliche Modelle, in dem eine Datenbank zum Beispiel Funktionen anbietet, um Datensätze zu finden. SQL ist eine zusätzliche Schicht zwischen dem Programmierer und der Datenbank, eine Art Programmiersprache mit der man eine Anfrage an die Datenbank selbst formulieren kann. Man kann so weitere Aufgaben in einer vergleichsweise kurzen Syntax formulieren und die Aufgabe an den SQL-Datenbank-Service übertragen.
Für SQL-Datenbanken ist es üblich, dass Datensätze in Klassen beschrieben werden, zum Beispiel 'Kunde' und 'Bestellung'. Dies lässt sich leicht auf die klassenorientierten Programmierung übertragen. In sogenannten Tabellen hält eine Datenbank die Informationen eines klassifizierten Objektes (z.B. Auto, Tier, Kunde) fest, eine Datenzeile entspricht somit eines Datensatzes, bzw. einer Instanz der jeweiligen Datenklasse. Eine Tabelle kann man sich als Entwickler zunächst wie eine Liste von Datensätzen vorstellen, allerdings reichern die meisten Datenbank-Managementsysteme (DBMS) ihren Tabellen zusätzliche Informationen an, so dass sie Daten beispielsweise schneller durchsuchen können.
Mit der vereinfachte Programmiersprache lassen sich nun Aufgaben an den Datenbank-Service schicken. Diese Sprache nennt sich „SQL“: Die Structured Query Language.
Beliebte Aufgaben bei SQL-Datenbanken sind Suchen, bei der mehrere Datensätze in einer Beziehung stehen. Daher spricht man bei SQL-Datenbanken auch von Relationalen Datenbanken. Man stelle sich eine Tabelle mit Kunden vor und eine Tabelle mit Bestellungen. Ein Kunde kann mehrere Bestellungen machen. Zwischen den beiden Tabellen lassen sich nun Relationen beschreiben: Ein Kunde kann Bestellungen aufgeben. Alle Bestellungen sind einer Kundennummer zugeordnet. Möchte man nun alle Bestellungen sehen, die „Hans Mustermann“ getätigt hat, muss man aus der Tabelle „Bestellungen“ alle Einträge heraussuchen, die im Feld „Kundennummer“ die gleiche Nummer stehen haben, wie das Feld „Kundenummer“ in der Tabelle „Kunden“ in der Zeile mit dem Kunde, der „Hans Mustermann“ heißt. Dies lässt sich in SQL formulieren und als Ergebnis erhält man die gewünschten Bestellungen mit einer auf Geschwindigkeit optimierten Suche, ohne dass man diese Suche von Hand programmieren muss.
SQL-Datenbanken gibt es von verschiedenen Herstellern, die leider die „Structured Query Language“ teilweise leicht unterschiedlich implementieren. Die hier vermittelten Kenntnisse werden aber durchaus ausreichen, um das grundlegende Verständnis für beliebige SQL-Datenbanken herzustellen. Wir werden uns SQL an der beliebten, kostenlosen Datenbank MySQL ansehen, da MySQL auf vielen Webservern angeboten wird. Wir werden dafür keine zusätzliche Programmiersprache verwenden, grundsätzlich kann man sich aber vorstellen, dass die SQL-Befehle, die wir verwenden, in den jeweiligen Programmiersprachen als Strings zusammengebaut werden und dann an den Datenbankservice geschickt werden.
Das werden wir uns später für die Programmiersprachen Index des PHP Tutorials und C-Programmierung genauer ansehen.
SQL-Services gibt nicht nur von MySQL. Es auch die freie Datenbank PostgreSQL, den Microsoft SQL-Server oder ebenfalls bekannt das Unternehmen Oracle mit der gleichnamigen SQL-Datenbank.