Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Datenmodellierung und Datenbanksysteme

Manipulieren von Datensätzen in Datenbanken

Vorhandene Datensätze ändern

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.

Aktualisieren von Daten (UPDATE)

Mit dem UPDATE-Statement werden bestehende Datensätze geändert. Das Schema von Update ist in der folgenden Abbildung dargestellt.
Abbildung: Schema von UPDATE

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.

Löschen von Daten (DELETE)

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.

Ändern von Tabellen (ALTER TABLE)

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
TABLE
ALTER spaltendefinition
in 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
constraintdefinition
Hinzufügen eines Constraint: Umfasst u.a.
Primär- und Fremdschlüssel sowie
NOT NULL- und UNIQUE-Bedingungen, letztere
auch über mehrere Spalten.
DROP CONSTRAINT
constraintname
Löschen eines Constraint: Umfasst u.a.
Primär- und Fremdschlüssel sowie
NOT NULL- und UNIQUE-Bedingungen, letztere
auch ü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.
Abbildung: Beispiel für einen Constraint: Fremdschlüssel

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;

Löschen von Tabellen (DROP)

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;

Erhaltung der referentiellen Integrität

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.