SQL-Grundbefehle

Aus IV1

Die nachfolgend dargestellten Beispiele orientieren sich an der SQL-Implementierung der Datenbank mySQL.

Erstellen, Ändern und Füllen von Tabellen

Eine Tabelle wird mit der Anweisung CREATE TABLE erstellt.

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)

(erstellt die Tabelle Buch mit den Spalten Nr, Autor, Titel, Preis, Verlag, Auslaufend und Bestand)

Moderne RDBMS und Desktop-Datenbanken bieten benutzerfreundliche Werkzeuge zur Erstellung der Tabellen an. Diese generieren die erforderliche CREATE TABLE-Anweisung aus dem Datenmodell automatisch.

Häufige Datentypen sind:

  • Zahlen (z.B. SMALLINT, FLOAT, DECIMAL)
  • Datum und Uhrzeit (z.B. DATE, DATETIME, TIME)
  • Zeichenketten (z.B. CHAR, VARCHAR, BLOB)

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).

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.

Das nachträgliche Hinzufügen einer Spalte wird mit der Anweisung ALTER TABLE bewirkt.

ALTER TABLE Buch
ADD Rabatt INT (2) NOT NULL


(fügt der Tabelle Buch die Spalte Rabatt hinzu)

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 die eingebetteten Datenbankschnittstellen.

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.

INSERT INTO Buch
VALUES (5145, 'Hofer', 'Datenbankmodelle', 21,50, 'obv', 'n', 250)

(erstellt in der Tabelle Buch einen Datensatz mit den angegebenen Werten)

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).

Löschen von Datensätzen

Wie auch bei der SELECT-Anweisung 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.

DELETE FROM Kunde
WHERE ID=4

(löscht den Datensatz mir der ID "4")

Ergibt die Bedingung eine Übereinstimmung in mehreren Datensätzen, so werden alle selektierten gelöscht.

DELETE FROM Kunde
WHERE Vorname='Michael'

(löscht alle Datensätze mit dem Vornamen "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 selbst vorgenommen.

UPDATE Kunde
SET Nachname='Mayer'
WHERE ID=4

(ändert im Datensatz mit der ID "4" den Nachnamen auf "Mayer")

Wiederum können natürlich auch mehrere Datensätze gleichzeitig mit der UPDATE Anweisung geändert werden.

UPDATE Kunde
SET Nachname='Neumayer'
WHERE Nachname='Mayer'

(ändert in jedem Datensatz, welcher den Nachnamen "Mayer" vorweist, selbigen auf "Neumayer")

Nicht nur eine Spalte lässt sich in mehreren Datensätzen auf einmal ändern, sondern auch mehrere Felder in einem Datensatz.

UPDATE Kunde
SET Plz=4055, Strasse='Pinselweg 12'
WHERE ID=1

(ändert im Datensatz mit der ID "1" die PLZ auf "4055" und die Straße auf "Pinselweg 12")

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. Mit AVG(Zahl) kann z.B. sofort der Mittelwert aus einer Reihe von Datensätzen mit numerischen Inhalten ermittelt werden.

Man sieht, die Möglichkeiten sind sehr groß. Diese alle hier zu behandeln wäre für eine Einführung zuviel des Guten. Nicht umsonst sind bereits ganze Bücher über SQL geschrieben worden, die sich ausführlich mit dem Thema auseinandersetzen.