Data Manipulation LanguageDie Data Manipulation Language (DML; deutsch Datenbearbeitungssprache) ist der Teil einer Datenbanksprache, die verwendet wird, um Daten zu schreiben, zu lesen, zu ändern und zu löschen. DML ist die Datenver- oder Datenbearbeitungssprache einer Datenbank und schließt die Formulierung von Abfragen ein. Für frühere und heutige Systeme sind zum Teil sehr verschiedene Ausprägungen der DML entworfen worden. Beispiele:
CALL PLITDLI(FOUR, 'GHU ', DB_PCB, IO_AREA, SSA1)
DELETE FROM bestellungen WHERE bestellstatus IS NULL
SELECT postleitzahl, stadt FROM kunden ORDER BY postleitzahl
Während in den ersten zwanzig Jahren der Datenbanktechnik die DML hauptsächlich zur Programmierung verwendet wurde, wird heute auch Wert auf die direkte Verwendung durch Benutzer gelegt. So kann z. B. die SQL-DML in den meisten Systemen auch interaktiv als Kommandosprache verwendet werden. Auch ist heute in der Regel das Wissen über interne technische Speicherstrukturen nicht mehr notwendig, um entsprechende Verarbeitungsbefehle formulieren zu können. In diesem Fall spricht man von deskriptiven (beschreibenden) Sprachen. Sonderstellung der AbfrageDie Sprachelemente zur Datenabfrage (bei SQL sind das die Schlüsselwörter SQLIn der praktisch wichtigen Structured Query Language lautet die Syntax wie folgt: INSERT INTO Relation [( Attribut+ )] VALUES ( ( Konstante+ ) )+
INSERT INTO Relation [( Attribut+ )] SFW-Block
UPDATE Relation SET (Attribut=Ausdruck)+ [WHERE Where-Klausel]
MERGE INTO Relation USING Quelle ON Join-Klausel
WHEN MATCHED UPDATE SET (Attribut=Ausdruck)+
WHEN NOT MATCHED [BY TARGET] INSERT (Attributliste) VALUES (Ausdruckliste)
[WHEN NOT MATCHED BY SOURCE DELETE]
DELETE FROM Relation [WHERE Where-Klausel]
TRUNCATE Relation
Mit INSERT können explizit konstruierte Tupel oder die Ergebnisse eines SFW-Blocks in eine Relation eingefügt werden. Dabei kann jeweils mehr als eine Zeile verarbeitet werden.
UPDATE-Anweisung kann insbesondere auch auf das zu manipulierende Attribut Bezug nehmen wie zum Beispiel in UPDATE Personal SET Gehalt=Gehalt*2 WHERE Abteilung='EDV'
Die TRUNCATE-Anweisung leert eine Tabelle vollständig und setzt im
Unterschied zu Beispiele: INSERT INTO Student (MatrNr, Name) VALUES (27123, 'Meier')
INSERT INTO Student (MatrNr, Name) VALUES (27124, 'Schulz'), (27125, 'Schmidt')
INSERT INTO Student VALUES (27126, 'Schmidt')
Beim INSERT-Statement kann die erste Klammer mit den Attribut-Namen auch weggelassen und direkt mit values() die Werte eingefügt werden. Allerdings müssen dann die Werte in der gleichen Reihenfolge wie in der Tabellendefinition angegeben werden. Zusätzlich müssen Werte für alle Spalten der Tabelle bereitgestellt werden. INSERT INTO Student (MatrNr, Name) SELECT MatrNr, Name FROM Student_alt
UPDATE Student SET Name = 'Meier' WHERE MatrNr = 27124
DELETE FROM Student
DELETE FROM Student WHERE MatrNr = 27124
TRUNCATE TABLE Student
Leert die Tabelle Student und setzt den eventuell vorhandenen Auto-Increment-Wert auf den definierten Standard (meistens 1). Andere Sprachelemente der Datenbank |