SQL-Grundbefehle
Die Syntax der nachfolgend dargestellten Beispiele orientiert sich an der SQL-Implementierung der Datenbank mySQL.
Erstellen von Tabellen
Eine neue Tabelle wird mit der Anweisung CREATE TABLE einer bestehenden Datenbank hinzugefügt. Im nachfolgenden Beispiel wird die Tabelle mit der Bezeichnung "Buch" erstellt, welche die Spalten (Datenbankfelder) Nr, Autor, Titel, Preis, Verlag, Auslaufend und Bestand enthält.
CREATE TABLE Buch (Nr SMALLINT (4) PRIMARY KEY, Autor VARCHAR (20) NOT NULL, Titel VARCHAR (30) NOT NULL, Preis DECIMAL (3,2) NOT NULL, Verlag CHAR (3) NOT NULL, Auslaufend TINYINT, Bestand SMALLINT (4) NOT NULL)
Die Angaben nach der Bezeichnung der Spalte (des Datenbankfeldes) definieren den Datentyp. So erzeugt das Argument "Nr SMALLINT (4) PRIMARY KEY," ein Datenbankfeld mit der Bezeichnung "Nr", welches nur ganzzahlige Werte aufnehmen kann, die einen Speicherplatz von 4 Byte nicht überschreiten. Es handelt sich um den Wertebereich von -2147483648 bis 2147483647. Die Komponente "PRIMARY KEY" weist darauf hin, dass das Feld "Nr" als Schlüsselfeld Verwendung findet.
Die Komponente "NOT NULL" bedeutet, dass dem betreffenden Feld ein Wert zugewiesen werden muss (Muss-Feld). Fehlt diese Komponente, kann das Feld auch "leer" bleiben (Kann-Feld).
Vertiefende Informationen: http://dev.mysql.com/doc/refman/5.1/de/numeric-types.html
Gängige Datenformate sind:
- für Zahlen (z.B. SMALLINT, FLOAT, DECIMAL)
- für Datum und Uhrzeit (z.B. DATE, DATETIME, TIME)
- für Zeichenketten (z.B. CHAR, VARCHAR, BLOB)
Vertiefende Informationen: http://dev.mysql.com/doc/refman/5.1/de/data-types.html
Moderne RDBMS und Desktop-Datenbanken bieten benutzerfreundliche Werkzeuge zur Erstellung der Tabellen an. Diese generieren die erforderliche CREATE TABLE-Anweisung aus dem vorliegenden Datenmodell automatisch.
Die Domäne
Unter der Domäne (Domain) eines Feldes wird der gewählte Datentyp für sowie auch die erlaubten Inhalte verstanden. Die Domäne beschreibt den erlaubten Lösungsraum eines Feldes. Durch die, der Datenbank-Anwendung entsprechenden Zuweisung von Datenformaten, wird die Domäne eines Datenbankfeldes formal beschrieben. Aufgrund der formalen Beschreibung der Domäne durch eine Formatzuweisung, wird auch verhindert, dass unzulässige Werte (z.B. Texte in Spalten, die nur Zahlen enthalten dürfen) erfasst werden.
Die Komponente "SMALLINT (2) würde z.B. ausreichen um die 4-stelligen, österreichischen Postleitzahlen aufzunehmen (Wertebereich von 0 bis 65535). Um zu verhindern, dass trotzdem ungültige Postleitzahlen (z.B. 4711 oder 12345) erfasst werden, wäre es aber nötig, die zulässigen Werte neben der Zuweisung des Datenformates noch taxativ aufzuzählen.
Hinzufügen eines Feldes
Das nachträgliche Hinzufügen einer Spalte wird mit der Anweisung ALTER TABLE bewirkt. Nachfolgende Anweisung fügt der Tabelle Buch die Spalte (das Datenbankfeld) Rabatt hinzu:
ALTER TABLE Buch ADD Rabatt INT (2) NOT NULL
Einfügen von Datensätzen
Das Eintragen von Daten funktioniert mit INSERT. Nach INTO wird wieder die Tabelle angegeben und diesesmal zusätzlich in Klammer auch die Felder, in die Daten eingefügt werden sollen. Die einzufügenden Werte stehen dann nach VALUES in der zweiten Klammer:
INSERT INTO Kunde (Vorname, Nachname, Strasse, Plz) VALUES ('Maria', 'Santa', 'Columbusstrasse 1492', 2034)
(erstellt in der Tabelle Kunde einen Datensatz und befüllt die Spalten Vorname, Nachname, Strasse und Plz)
Werden alle Felder befüllt, so müssen diese nicht explizit angeführt werden. Nachfolgende Anweisung erstellt in der Tabelle Buch einen Datensatz mit den in der Klammer angegebenen Werten:
INSERT INTO Buch VALUES (5145, 'Hofer', 'Datenbankmodelle', 21,50, 'obv', 'n', 250)
Die Syntax ist recht unkompliziert. Beachtet werden muss nur, dass die Anzahl der Spalten mit den Werten übereinstimmt. Die Spaltennamen in der ersten Klammer müssen auch nur dann angegeben werden, wenn nicht alle Spalten mit Werten gefüllt werden. Dies ist z.B. bei unserer Beispieltabelle “Kunde” der Fall wo in das ID-Feld nichts eingetragen werden kann, da es von der Datenbank automatisch ausgefüllt wird (ein sogenanntes Auto-Increment Feld).
Die manuelle Eingabe eignet sich nicht für Massendaten, weshalb DBMS formularorientierte Anwendungen zur direkten Eingabe der Datensätze bieten. Software für betriebliche Anwendungen nutzt eingebettete Datenbankschnittstellen, um Massendaten - die z.B. aus Tabellenkalkulations-Anwendungen stammen - automatisiert hinzu zu fügen.
Löschen von Datensätzen
Wie auch bei der SELECT-Anweisung (siehe SQL-Abfragen) wird bei DELETE die Bedingung WHERE zur Auswahl des zu löschenden Datensatzes bestimmt. Normalerweise erfolgt dies durch die gezielte Angabe der ID-Nummer des betreffenden Datensatzes. Nachfolgende Anweisung löscht den Datensatz mir der Nr "4"
DELETE FROM Kunde WHERE Nr=4
Ergibt die Bedingung eine Übereinstimmung in mehreren Datensätzen, so werden alle selektierten gelöscht. Nachfolgende Anweisung löscht alle Datensätze mit dem Vornamen "Michael":
DELETE FROM Kunde WHERE Vorname='Michael'
Ändern von Datensätzen
Um Daten in einem Datensatz zu erneuern ist es nicht zwangsweise notwendig, diesen zuerst zu löschen und dann neu anzulegen. Hierfür bietet SQL die Möglichkeit, dies mit UPDATE zu tun. Auch hier wird die Bedingung WHERE benötigt, um den passenden Datensatz zu finden. Mit SET wird dann die Änderung der Inhalte der Datenbankfelder vorgenommen:
UPDATE Kunde SET Nachname='Mayer' WHERE ID=4
(ändert im Datensatz mit der ID "4" den Nachnamen auf "Mayer")
Es können auch mehrere Datensätze gleichzeitig mit der UPDATE Anweisung geändert werden. Nachfolgende Anweisung ändert in jedem Datensatz, welcher den Nachnamen "Mayer" vorweist, selbigen auf "Neumayer"
UPDATE Kunde SET Nachname='Neumayer' WHERE Nachname='Mayer'
Nicht nur eine Spalte lässt sich in mehreren Datensätzen auf einmal ändern, sondern auch mehrere Felder in einem Datensatz. Nachfolgende Anweisung ändert im Datensatz mit der ID "1" die PLZ auf "4055" und die Straße auf "Pinselweg 12"
UPDATE Kunde SET Plz=4055, Strasse='Pinselweg 12' WHERE ID=1
Sonstige Anweisungen
Die Anweisungen INSERT, DELETE und UPDATE gehören zu den wichtigsten in SQL und gehören zur Gruppe der Data Manipulation Language (DML). Daneben gibt es noch eine Vielzahl anderer Möglichkeiten, Datenbanken mit SQL zu bearbeiten.
Die manipulierenden (solche die den Inhalt oder die Struktur verändern) SQL-Anweisungen sind in der hinterlegten Übungs-Datenbank ausgeschlossen.