Datenmanipulationen

Ü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

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne

Loading…
Avatar von manuel

AUTOR

manuel