Inhaltsverzeichnis
Überblick
Neben der Abfragesprache stellt SQL auch eine Datenmanipulationssprache (DML) zur Verfügung. Dabei existieren folgende Operationen:
- INSERT INTO: Einfügen von Datensätzen
- UPDATE: Ändern von Datensätzen
- DELETE FROM: Löschen von Datensätzen
Weiters betrachten wir VIEWS, die quasi mehrere Tabellen zu einer „virtuellen“ Tabelle zusammen fassen können
INSERT INTO
Grundlegende Syntax:
INSERT INTO Relation(Attribut1, Attribut2) VALUES (Wert1, Wert2)
Die Attributbezeichner können auch weggelassen werden – dann werden die Werte der Reihenfolge in die Attribute (Spalten) geschrieben.
Beispiele:
INSERT INTO konto VALUES (456845, "Donaustadt", NULL)
INSERT INTO konto(kontonummer, filialname, kontostand) VALUES (456845, "Donaustadt", NULL)
„Alle Kreditkunden der Filiale „Neubau“ erhalten ein Konto. Als Kontonr. dient die Kreditnr.:“
INSERT INTO konto
SELECT kreditnummer, filialname
FROM kredit
WHERE filialname = "Neubau"
INSERT INTO Kontoinhaber
SELECT kundenname, kredit.kreditnummer
FROM kredit, kreditnehmer
WHERE filialname = "Neubau" AND kredit.kreditnummer = kreditnehmer.kreditnummer
UPDATE
Grundlegende Syntax:
UPDATE Relation1 SET Attribut1 = Wert1 WHERE Prädikat
Beispiel:
UPDATE konto SET kontostand = kontostand*1.06 WHERE kontostand > 10000
UPDATE konto SET kontostand = kontostand*1.03 WHERE kontostand <= 10000
Dieser Fall kann auch über eine CASE-Abfrage gelöst werden:
UPDATE konto SET kontostand CASE
WHEN kontostand <= 10000 THEN kontostand * 1.03
ELSE kontostand * 1.06
END
DELETE FROM
Grundlegende Syntax:
DELETE FROM Relation1 WHERE Prädikat
Beispiel:
DELETE FROM konto WHERE filialname = "Neubau"
Es können auch Mengen angegeben werden:
DELETE FROM konto WHERE filialname IN
(SELECT filialname FROM filiale WHERE filialname = "Neubau")
So können auch Aggregationswerte zum Löschen verwendet werden. Z. B. „Lösche alle Konten, bei denen der Kontostand unter dem durchschnittlichen Kontostand liegt“:
DELETE FROM konto WHERE kontostand < (SELECT AVG(kontostand) FROM konto)
Der Durchschnitt wird in diesem Fall zuerst berechnet, dann gelöscht (er würde sich ja mit jedem gelöschten Konto ändern).
CREATE VIEW
Syntax:
CREATE VIEW Name AS SelectAnweisung
Beispiel:
CREATE VIEW allekunden AS
(SELECT * FROM kontoinhaber)
UNION
(SELECT * FROM kreditnehmer)
Quelle
- Schikuta, Erich: Datenmodellierung und Datenbanksysteme, FFH, 2008