📖DML - Datenmanipulation

Die DML Befehle werden verwendet, um den Inhalt einer Tabelle, also die Daten, zu manipulieren.

Befehl

Beschreibung

INSERT

Daten erfassen

Einfügen neuer Werte in einer Tabelle unter Wahrung der Schlüsselintegrität.

Übernehmen von Daten aus anderen Tabellen.

UPDATE

Daten mutieren

Inhalt einer oder mehrerer Felder von bestehenden Datensätzen verändern.

DELETE

Daten löschen

Löschen einer oder mehrerer ganzen Zeilen.

Achtung: Löschen eines Feldinhaltes ist ein UPDATE, kein DELETE!

Aus der Sicht der Datenbankmaschine werden immer ganze Tupel geändert oder gelöscht. Es kann jeweils nur in einer Tabelle geändert oder gelöscht werden.

INSERT-Syntax

Alle Spalten einfügen

INSERT [INTO] tabelle
VALUES (wert1, wert2, wert3, …, wertN);

Die Anzahl und Reihenfolge der in der VALUES-Klausel angegebenen Werte muss mit der Tabellendefinition übereinstimmen. Möchte man nicht alle Werte setzen, kann man nach dem Tabellennamen die Namen der zu ändernden Spalten angeben.

Nur ausgewählte Spalten einfügen

INSERT [INTO] tabelle
(spalte2, spalte3, spalte6) VALUES (wert2, wert3, wert6);

Ausgewählte Spalten mit SET

INSERT [INTO] tabelle 
SET spalte2=wert2, spalte3=wert3, spalte6=wert6;

Aus SELECT einfügen

-- Alle Spalten
INSERT INTO tabelle1
    SELECT spalte1, spalte2, spalte3, spalte4, spalte5
    FROM tabelle2;
    
-- Ausgewählte Spalten

INSERT INTO tabelle1
    (spalte2, spalte3, spalte6)
    SELECT spalte1, spalte2, spalte3
    FROM tabelle2;

Beispiele

-- Alle Spalten setzen
INSERT INTO tabelle
VALUES (1, 'Meier', 'Ueli', NULL, '01.1.1970');

-- Selektiv Spalten setzen
INSERT INTO tabelle (spalte1, spalte2, spalte3, spalte6, spalte9)
    VALUES (1, 'Meier', 'Ueli', NULL, '01.1.1970');

-- Bulk-Insert aus anderer Tabelle
INSERT INTO tabelle1
    SELECT spalte1, spalte2, spalte3, spalte4, spalte5
    FROM tabelle2;

UPDATE-Syntax

UPDATE tabelle 
SET spalte1 = wert1, spalte2 = wert2, …, spalteN = wertN 
WHERE spalte1 = wertx

Beispiele

UPDATE tabelle
SET spalte1 = 10, spalte2 = 'Meier', spalte3 = 'Ueli'
WHERE spalte1 = 9;

UPDATE tabelle
SET spalte1 = spalte4
WHERE  spalte2 = 'N';

DELETE-Syntax

DELETE FROM tabelle
WHERE spalte1 = wert1;

TRUNCATE ist viel performanter als DELETE, da es nicht protokolliert wird.

Beispiele

DELETE FROM tabelle
WHERE spalte5 < '01.01.2000';

Referentielle Integrität

Wenn aus einer Anderen Tabelle ein Fremdschlüssel auf einen hier zu löschenden Datensatz zeigt, kann er nicht gelöscht werden. Um den Löschvorgang durchführen zu können, muss zuerst der Datensatz aus der anderen Tabelle gelöscht werden.

Last updated

Was this helpful?