Ein Einstieg
Nehmen wir einmal an, dass ein Versicherungsunternehmen einen neuen Geschäftsführer bekommt. Dieser sammelt zunächst Informationen, um sich mit dem Unternehmen vertraut zu machen.
Datenbanken enthalten Informationen
[Bearbeiten]Der Geschäftsführer findet in seinem Büro keine Akten, sondern nur einen PC. Nach dem Einschalten und Anmelden bekommt er folgende Begrüßung:
Wikibooks-Beispieldatenbank (C) Wiki-SQL Bitte geben Sie einen SQL-Befehl ein: sql >
Damit wird der Geschäftsführer auf mehrere Punkte der Organisation in seinem Unternehmen hingewiesen.
- Die Daten sind in einer Datenbank zusammengefasst mit dem Namen Beispieldatenbank.
- Diese Datenbank (DB) stammt von der Firma Wikibooks.
- Um etwas mit dieser DB zu machen, soll er hinter "sql >" einen SQL-Befehl eingeben.
Die Inhalte dieser Datenbank sind in Beispieldatenbank beschrieben, Einzelheiten in Tabellenstruktur der Beispieldatenbank erläutert.
Das Datenbanksystem (DBMS) der Firma Wikibooks wird als Wiki-SQL bezeichnet. Dies bedeutet, dass die Beispieldatenbank zu Wiki-SQL passen muss – in Bezug auf das Dateiformat, die interne Struktur und den Aufbau der Befehle.
SQL ist die Abkürzung für Structured Query Language, also strukturierte Abfragesprache. Der Geschäftsführer hat schon einmal davon gehört, dass dies eine standardisierte Form ist, um mit Datenbanken zu arbeiten, und probiert es aus.
Abfrage nach den Mitarbeitern
[Bearbeiten]Als erstes möchte er eine Liste seiner Mitarbeiter haben. Er überlegt, wie die Abfrage lauten könnte:
Hole Name und Vorname von den Mitarbeitern
Da die Abfrage lediglich eine Fehlermeldung erzeugt, probiert er, seine Abfrage in unterschiedlicher Form auf Englisch durchzuführen (leider auch ohne Erfolg); diese könnten etwa so aussehen:
Get Name, Vorname From Mitarbeiter Fetch Name, Vorname From Mitarbeiter Find Name, Vorname From Mitarbeiter Search Name, Vorname From Mitarbeiter
Und schließlich bekommt er mit der folgenden Eingabe keine Fehlermeldung, sondern ein Ergebnis:
Select Name, Vorname From Mitarbeiter
Die Liste ist ihm zu lang und unübersichtlich. Er will sie zunächst einmal sortieren und probiert Sortierung, Reihenfolge aus, bis es passt:
Select Name, Vorname From Mitarbeiter order by Name
Dann möchte er die Auswahl einschränken, nämlich auf die Mitarbeiter mit Anfangsbuchstaben 'A'. Wieder nach ein paar Versuchen weiß er, dass nicht WITH, sondern WHERE die Lösung liefert.
Select Name, Vorname From Mitarbeiter where Name < 'B'
Jetzt möchte er beide Abfragen verbinden:
Das kann doch nicht sein?! WHERE ist doch das richtige Verfahren für eine solche Einschränkung?! Kommt es etwa auf die Reihenfolge der Zusätze an?
Welche Informationen sind denn sonst gespeichert? Er weiß auch (z. B. vom DIR-Befehl des Betriebssystems), dass ein Sternchen anstelle von alles gesetzt werden kann. Und siehe da, es klappt:
Prima, damit ist klar, wie Informationen aus der Datenbank geholt werden:
SELECT <Liste von Teilinformationen> FROM <Teil der Datenbank> WHERE <Bedingung> ORDER BY <Sortierung>
Neuaufnahme bei den Mitarbeitern
[Bearbeiten]Als nächstes möchte der Geschäftsführer sich selbst als Mitarbeiter speichern. Schnell kommt er auf das „Grundgerüst“ des Befehls:
INSERT INTO Mitarbeiter VALUES
Wenn er danach seinen Namen schreibt, bekommt er wieder eine Fehlermeldung mit "token unknown". Er hat aber schon von der Benutzung von Klammern in der EDV gehört.
Na gut, dann wird eben ausdrücklich angegeben, dass erstmal nur Name und Vorname einzutragen sind.
Ach so, die Personalnummer muss angegeben werden, und vermutlich alles andere auch. Aber die ID ist doch gar nicht bekannt? Nun, immerhin sind wir auf diese Grundstruktur des Befehls gekommen:
INSERT INTO <Teil der Datenbank> [ ( <Liste von Teilinformationen> ) ] VALUES ( <Liste von Werten> )
SQL und natürliche Sprache
[Bearbeiten]Offensichtlich sind die Befehle von SQL der natürlichen englischen Sprache nachempfunden. (Die englische Sprache hat wegen der klaren Satzstruktur und Grammatik insofern natürlich Vorteile gegenüber der komplizierten deutschen Syntax.)
SELECT für Abfragen
[Bearbeiten]Um Daten abzufragen, gibt es den SELECT-Befehl mit folgenden Details:
SELECT wähle aus [ DISTINCT | ALL ] verschiedene | alle <Liste von Teilinformationen> FROM <Teil der Datenbank> aus [ WHERE <Bedingungen> ] wobei [ GROUP BY <Liste von Spalten> ] gruppiert durch [ HAVING <Bedingungen> ] wobei [ ORDER BY <Sortierung> ] sortiert durch
INSERT für Neuaufnahmen
[Bearbeiten]Um Daten neu zu speichern, gibt es den INSERT-Befehl mit folgenden Details:
INSERT INTO <Teil der Datenbank> einfügen in [ <Liste von Teilinformationen> ] VALUES ( <Liste von Werten> ) Werte /* oder */ INSERT INTO <Teil der Datenbank> einfügen in [ <Liste von Teilinformationen> ] SELECT <Ergebnis einer Abfrage> durch eine Auswahl
UPDATE für Änderungen
[Bearbeiten]Um Daten zu ändern, gibt es den UPDATE-Befehl mit folgenden Details:
UPDATE <Teil der Datenbank> aktualisiere SET <spalte1> = <wert1> [ , setze fest <spalte2> = <wert2> , usw. <spalten> = <wertn> ] [ WHERE <bedingungsliste> ]; wobei
DELETE für Löschungen
[Bearbeiten]Um Daten zu löschen, gibt es den DELETE-Befehl mit folgenden Details:
DELETE FROM <Teil der Datenbank> lösche aus [ WHERE <bedingungsliste> ]; wobei
CREATE TABLE bei der Struktur einer Tabelle
[Bearbeiten]Um eine neue Tabelle zu erstellen, gibt es den CREATE TABLE-Befehl mit folgenden Einzelheiten:
CREATE TABLE <Teil der Datenbank> erzeuge Tabelle ( <Spaltenliste>, <weitere Angaben> )
So einfach kann es gehen? Dann kann man doch auch eigene Daten erzeugen, speichern, abfragen und auswerten.
Zusammenfassung
[Bearbeiten]Die einzelnen Teile der SQL-Befehle sind leicht verständlich; und es scheint nur wenige Befehle zu geben, die man als „Anfänger“ wirklich lernen muss. Natürlich kann man nicht sofort alle Möglichkeiten erfassen. Aber angesichts des begrenzten Umfangs und der klaren Struktur lohnt es sich, sich näher damit zu befassen. Dies will dieses Buch erleichtern.
Siehe auch
[Bearbeiten]Wikipedia hat einen Artikel zum Thema SQL.
Weitere Informationen gibt es in folgenden Kapiteln: