Bereits in der Datenbank bestehende Datensätze können verändert werden. Dazu bietet SQL die Befehle
UPDATE und DELETE an, die zum gezielten Ändern von Attributen
in Tabellen und dem kompletten Löschen von Datensätzen eingesetzt werden können.
Mit dem UPDATE-Statement werden bestehende Datensätze geändert. Das Schema von Update ist in
der folgenden Abbildung dargestellt.

Mit UPDATE können ganz bestimmte vorgegebene Werte in Datensätze eingetragen werden. Ein
Beispiel zur Änderung des Wertes im Feld Verfuegbarkeit auf die Zeichenkette "sofort" eines ganz bestimmten Artikels, der in der Tabelle
Artikel gespeichert ist, lautet wie folgt:
UPDATE Artikel SET Verfuegbarkeit = 'sofort' WHERE ArtikelNR = 'KJNSM7873';
Darüber hinaus können mit UPDATE auch Werte mit Bezug auf den alten Wert neu berechnet werden.
Hier ein Beispiel, bei dem der Preis aller Artikel, die weniger als 10 EUR kosten, um 2 EUR erhöht wird:
UPDATE Artikel SET Preis = Preis + 2 WHERE Preis < 10;
Jeder Datensatz der Tabelle, für den die Auswahlbedingung zutrifft, wird geändert. Wird keine Auswahlbedingung formuliert, sind alle Datensätze der Tabelle betroffen.
Das Löschen von Datensätzen aus der Datenbank erfolgt mit dem SQL-Statement DELETE. Die
Struktur von DELETE ist sehr einfach:
DELETE FROM tabelle WHERE bedingung;
Es muss nur der Tabellenname angegeben werden und eine Auswahlbedingung. Alle Datensätze, für die die Auswahlbedingung zutrifft, werden unwiederbringlich aus dem Datenbestand entfernt. Ohne Bedingung wird der gesamte Inhalt der Tabelle gelöscht, die Struktur der Tabelle bleibt jedoch enthalten.
| Hinweis |
| Relationale DBMS kennen in der Regel keine Undo-Funktion. Erfolgreich gelöschte Datensätze können ohne Backup nicht wiederhergestellt werden. |
Bei der Erstellung von Tabellen in Datenbanken und auch während der Wartung und Weiterentwicklung von Anwendungen ist es in der Regel
notwendig, die aktuelle Definition von Tabellen anzupassen. Das Hinzufügen, das Löschen und das Ändern von Spalten der
Tabelle zählen ebenso zu typischen Änderungsanliegen wie das Anpassen von Primär- und Fremdschlüsseln oder Constraints.
Änderungen an einer Tabelle werden mit dem SQL-Statement ALTER TABLE ermöglicht. Die
Elemente von ALTER TABLE werden in der folgenden Tabelle vorgestellt und beschrieben.
| Elemente von ALTER TABLE | |
|---|---|
| Elemente von ALTER TABLE | Beschreibung |
ALTER TABLE tabelle |
Festlegen der zu ändernden Tabelle |
ADD spaltendefinition |
Hinzufügen einer Spalte; Syntax wie bei CREATE |
ALTER spaltendefinitionin einigen DBMS (wie MySQL) auch: MODIFY spaltendefinition |
Ändern von Eigenschaften einer Spalte durch Angeben aller Eigenschaften, Syntax wie bei CREATE TABLE |
DROP spalten |
Löschen einer Spalte durch Angabe des Spaltennamen |
ADD CONSTRAINT |
Hinzufügen eines Constraint: Umfasst u.a. Primär- und Fremdschlüssel sowie NOT NULL- und UNIQUE-Bedingungen, letztereauch über mehrere Spalten. |
DROP CONSTRAINT |
Löschen eines Constraint: Umfasst u.a. Primär- und Fremdschlüssel sowie NOT NULL- und UNIQUE-Bedingungen, letztereauch über mehrere Spalten. |
Ein konkretes Beispiel zum Hinzufügen und Löschen von Constraints anhand eines Fremdschlüssels im DBMS MySQL 5.6 wird in der
folgenden Abbildung gezeig. Die konkrete Syntax von ALTER TABLE variiert jedoch in Abhängigkeit vom
eingesetzten DBMS.

Eine beispielhafte Definition eines Primärschlüssels mit ALTER TABLE erfolgt so:
ALTER TABLE Adresse ADD CONSTRAINT pk_1 PRIMARY KEY (AdresseID);
Hier wird durch ein Constraint mit der ID pk_1 in der Tabelle Adresse die Spalte AdresseID zum
Primärschlüssel bestimmt.
Das Entfernen von Primärschlüsseln im DBMS MariaDB erfolgt mit dem Schlüsselwort DROP PRIMARY
KEY, hier beispielhaft für die Tabelle Adresse:
ALTER TABLE Adresse DROP PRIMARY KEY;
Das Entfernen von Fremdschlüsseln im DBMS MariaDB erfolgt mit dem Schlüsselwort DROP FOREIGN
KEY gefolgt von der Angabe der Constraint ID, hier beispielhaft für die Tabelle Adresse:
ALTER TABLE Adresse DROP FOREIGN KEY fk_1;
Das vollständige Löschen einer Tabelle ist mit SQL sehr leicht, hat jedoch sehr drastische Auswirkungen: Inhalt und Struktur
der Tabelle werden unwiderruflich aus der Datenbank entfernt. Das Schlüsselwort dafür lautet DROP
TABLE, wobei zum Löschen der Tabelle nur noch ihr Name angegeben werden muss. Hier beispielhaft der Löschbefehl
für die Tabelle Adresse:
DROP TABLE Adresse;
Beim Formulieren von SQL-Statements, um bestehende Daten zu ändern und zu löschen, muss der Entwickler sicherstellen, dass alle
technischen und fachlichen Integritätsbedingungen erfüllt sind. Wurden in einer Datenbank Fremdschlüsselbeziehungen definiert,
müssen diese zur Erhaltung der referentiellen Integrität beim Ändern des Datenbestands besonders berücksichtigt werden.
Eine Möglichkeit dazu ist die Spezifikation des automatischen Verhaltens des DBMS bei der Aktualisierung von Fremdschlüsseln mit
ON DELETE und ON UPDATE. Je nachdem wie sich das DBMS beim
Ändern oder Löschen verhalten soll, muss das der Entwickler bei der Formulierung der SQL-Statements berücksichtigen.
Darüber hinaus gibt es häufig auch fachliche Abhängigkeiten im Datenmodell, die automatisch durch das DBMS sichergestellt
werden können. Diese müssen dem Entwicklungsteam bekannt sein, sodass bei der Erstellung von SQL-Befehlen zur Manipulation des
Datenbestands mögliche Verletzungen der Konsistenz vermieden werden können.
Als Resultat stehen häufig eine Menge von SQL-Statements, zu denen sichergestellt werden muss, dass sie "an einem Stück" ausgeführt werden, da eine nur teilweise Ausführung Konsistenzanforderungen verletzen würde. Das unterstützen relationale Datenbanksysteme mit dem Konzept der Transaktion.