6.4 Update-Operationen
- bisher: Anfragen ohne Änderungen an Basisrelationen
- jetzt: Updates zur Veränderung der Basisrelationen
- Update-Operationen:
- Einfügen neuer Tupel in Relation
- Löschen von Tupeln aus Relation
- Ändern von Tupeln in Relation
- jeweils als
- Eintupel-Operation (Erfasse neuen Artikel)
- Mehrtupel-Operationen (Erhöhe den Preis aller Artikel um 2,5%)
- in DBS mit graphischer Benutzeroberfläche: Update-Operationen meist menü- bzw. formulargesteuert
- im folgenden: Update-Operationen in SQL
Update-Operationen
in SQL:
- INSERT: Einfügen eines oder mehrerer Tupel in eine Basisrelation oder Sicht
- UPDATE: Ändern eines oder mehrerer Tupel in einer Basisrelation oder Sicht
- DELETE: Löschen eines oder mehrerer Tupel aus einer Basisrelation oder Sicht
Update-Operationen
INSERT:
- allgemein (Oracle):
INSERT
INTO basisrelation [ (attribut1,...,attribut_n]
VALUES (konstante1,...,konstante_n);
- INSERT INTO kunde
VALUES ('Winzig','Osnabrueck', 120.00);
Werte müssen gleiche Reihenfolge haben wie zugehörige Attribute in CREATE TABLE-Anweisung
- INSERT INTO kunde (KName,Kontostand)
VALUES ('Hurtig', 20.50);
Wert von KAdresse wird auf NULL gesetzt
- INSERT INTO fuehrt
VALUES (9999, 99);
in ANSI-SQL: keine Integritätsbedingungen -> Nonsens möglich!
in SQL2:FrEmdschlüssel als Integritätsbedingung in CREATE TABLE gesetzt:
ERROR at line 1: ORA-02291: integrity constraint
(JUTTA.FUEHRT_FK2) violated - parent key not found
Update-Operationen
DELETE:
- allgemein (Oracle):
DELETE
FROM basisrelation
[ WHERE bedingung];
- Löschen eines Tupels:
DELETE FROM kunde WHERE KName = 'Schnell';
- Löschen mehrerer Tupel:
DELETE FROM kunde WHERE KAdresse = 'Osnabrueck';
- Löschen der gesamten Relation:
DELETE FROM kunde;
- Verletzen von Integritätsbedingungen:
DELETE FROM Artikel WHERE Artnr = 19;
Update-Operationen
UPDATE:
- allgemein (Oracle):
UPDATE basisrelation
SET attribut1 = ausdruck1,
...
attribut_n = ausdruck_n
[ WHERE bedingung ];
- Wirkung: in allen Tupel von basisrelation, die bedingung erfüllen, werden die Attributwerte wie angegeben ersetzt
- Beispiel:
Angestellter:
- UPDATE angestellter SET gehalt = gehalt+1000 WHERE gehalt < 5000;
Ergebnis: neue Basisrelation
- als Eintupel-Operation: Angabe eines Schlüsselwertes hinter WHERE:
UPDATE angestellter SET gehalt = 8000
WHERE angname='Bond';
- Änderung der gesamten Relation:
UPDATE angestellter SET gehalt = 3000;
Update-Operationen
Probleme:
- nicht sehr komfortabel für Anwender
- folgenschwere Fehlermöglichkeiten: Ändern, Löschen einer ganzen Relation als einfachste Möglichkeit
Jutta Goeers
Tue May 27 10:37:46 MET DST 1997