Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen.

Ähnliche Präsentationen


Präsentation zum Thema: "7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen."—  Präsentation transkript:

1 7 Verändern von Daten

2 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen aus einer Tabelle Transaktionskontrolle Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen aus einer Tabelle Transaktionskontrolle

3 9-3 Data Manipulation Language Ein DML Statement wird ausgeführt bei: – Hinzufügen neuer Zeilen zu einer Tabelle – Modifikation von existierenden Zeilen in einer Tabelle – Löschen von Zeilen aus einer Tabelle Eine Transaktion besteht aus einer Folge von DML-Statements, die eine logische Einheit (Unit of Work) bilden. Ein DML Statement wird ausgeführt bei: – Hinzufügen neuer Zeilen zu einer Tabelle – Modifikation von existierenden Zeilen in einer Tabelle – Löschen von Zeilen aus einer Tabelle Eine Transaktion besteht aus einer Folge von DML-Statements, die eine logische Einheit (Unit of Work) bilden.

4 9-4 Hinzufügen einer neuen Zeile zu einer Tabelle (Insert) DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON Neue Zeile 50 DEVELOPMENT DETROIT DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON “…Einfügen neue Zeile in die DEPT Tabelle…” 50 DEVELOPMENT DETROIT

5 9-5 Der INSERT Befehl Hinzufügen neuer Zeilen zu einer Tabelle mit Hilfe des INSERT Statement. Nur eine Zeile wird gleichzeitig eingefügt bei dieser Syntax. Hinzufügen neuer Zeilen zu einer Tabelle mit Hilfe des INSERT Statement. Nur eine Zeile wird gleichzeitig eingefügt bei dieser Syntax. INSERT INTOtable [(column [, column...])] VALUES(value [, value...]); INSERT INTOtable [(column [, column...])] VALUES(value [, value...]);

6 9-6 Einfügen neuer Zeilen Einfügen einer neuen Zeile, die für jede Spalte Werte enthält. Gebe die Werte standardmäßig in der Reihenfolge der Spalten der Tabelle an. Optional: Angabe der Spalten in der INSERT-Klausel. Zeichen- und Datumsfelder in einfache Hochkommas einschließen. Einfügen einer neuen Zeile, die für jede Spalte Werte enthält. Gebe die Werte standardmäßig in der Reihenfolge der Spalten der Tabelle an. Optional: Angabe der Spalten in der INSERT-Klausel. Zeichen- und Datumsfelder in einfache Hochkommas einschließen. SQL> INSERT INTOdept (deptno, dname, loc) 2 VALUES(50, 'DEVELOPMENT', 'DETROIT'); 1 row created.

7 9-7 Einfügen von Zeilen mit Nullwerten Implizite Methode: Spalte aus der Spaltenliste weglassen. SQL> INSERT INTOdept (deptno, dname ) 2 VALUES(60, 'MIS'); 1 row created. Explizite Methode: Schlüsselwort NULL angeben. SQL> INSERT INTOdept 2 VALUES(70, 'FINANCE', NULL); 1 row created.

8 9-8 Einfügen spezieller Werte SYSDATE Funktion ermittelt aktuelles Datum und Uhrzeit. SQL> INSERT INTOemp (empno, ename, job, 2mgr, hiredate, sal, comm, 3deptno) 4 VALUES(7196, 'GREEN', 'SALESMAN', 57782, SYSDATE, 2000, NULL, 610); 1 row created.

9 9-9 Kopieren von Datensätzen aus einer anderen Tabelle INSERT Statement mit Subquery verbinden. VALUES-Klausel nicht verwenden. Anzahl der Spalten in der INSERT Klausel muß mit der in der Subquery übereinstimmen. INSERT Statement mit Subquery verbinden. VALUES-Klausel nicht verwenden. Anzahl der Spalten in der INSERT Klausel muß mit der in der Subquery übereinstimmen. SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECTempno, ename, sal, hiredate 3 FROM emp 4 WHEREjob = 'MANAGER'; 3 rows created.

10 9-10 Ändern von Daten in einer Tabelle EMP “…ändere eine Zeile in EMP Tabelle…” EMP EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT 10 7698BLAKEMANAGER 30 7782CLARKMANAGER 10 7566JONESMANAGER 20... 20 EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT 10 7698BLAKEMANAGER 30 7782CLARKMANAGER 10 7566JONESMANAGER 20...

11 9-11 Der UPDATE Befehl Modifiziere existierende Zeilen mit dem UPDATE Statement. Ändere mehr als eine Zeile wenn erforderlich. Modifiziere existierende Zeilen mit dem UPDATE Statement. Ändere mehr als eine Zeile wenn erforderlich. UPDATEtable SETcolumn = value [, column = value,...] [WHERE condition]; UPDATEtable SETcolumn = value [, column = value,...] [WHERE condition];

12 9-12 Ändern von Zeilen in einer Tabelle Eine oder mehrere Zeilen werden modi- fiziert, wenn eine WHERE Klausel besteht. Alle Zeilen der Tabelle werden modifiziert wenn WHERE Klausel weggelassen wird. Eine oder mehrere Zeilen werden modi- fiziert, wenn eine WHERE Klausel besteht. Alle Zeilen der Tabelle werden modifiziert wenn WHERE Klausel weggelassen wird. SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782; 1 row updated. SQL> UPDATE employee 2 SET deptno = 20; 14 rows updated. SQL> UPDATE employee 2 SET deptno = 20; 14 rows updated.

13 9-13 Ändern mit Hilfe einer Multiple-Column Subquery SQL> UPDATE emp 2 SET (job, deptno) = 3 (SELECT job, deptno 4 FROM emp 5 WHERE empno = 7499) 6 WHERE empno = 7698; 1 row updated. Ändere Job und Abteilung (Deptno) des Angestellten 7698, so daß diese mit dem Angestellten 7499 übereinstimmen.

14 9-14 Ändern von Zeilen basierend auf einer anderen Tabelle Verwende Subqueries in UPDATE Befehlen, um Zeilen in einer Tabelle zu ändern, basierend auf Werten einer anderen Tabelle. SQL>UPDATEemployee 2SETdeptno = (SELECTdeptno 3FROMemp 4WHEREempno = 7788) 5WHEREjob = (SELECTjob 6FROMemp 7WHEREempno = 7788); 2 rows updated. SQL>UPDATEemployee 2SETdeptno = (SELECTdeptno 3FROMemp 4WHEREempno = 7788) 5WHEREjob = (SELECTjob 6FROMemp 7WHEREempno = 7788); 2 rows updated.

15 9-15 UPDATE emp * ERROR at line 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found UPDATE emp * ERROR at line 1: ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found SQL> UPDATEemp 2 SETdeptno = 55 3 WHEREdeptno = 10; SQL> UPDATEemp 2 SETdeptno = 55 3 WHEREdeptno = 10; Ändern von Zeilen: Integrity Constraint Error Department number 55 does not exist

16 9-16 “…lösche einer Zeile aus der DEPT Tabelle …” Löschen einer Zeile aus einer Tabelle DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 50 DEVELOPMENT DETROIT 60MIS... DEPT DEPTNO DNAME LOC ------ ------------------ 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 60MIS...

17 9-17 Der DELETE Befehl Existierende Zeilen können mit Hilfe des DELETE Befehls gelöscht werden. DELETE [FROM] table [WHERE condition]; DELETE [FROM] table [WHERE condition];

18 9-18 Einzelne Zeilen werden gelöscht, wenn WHERE Klausel angegeben wird. Alle Zeilen einer Tabelle werden gelöscht, wenn WHERE Klausel weggelassen wird. Einzelne Zeilen werden gelöscht, wenn WHERE Klausel angegeben wird. Alle Zeilen einer Tabelle werden gelöscht, wenn WHERE Klausel weggelassen wird. Löschen von Zeilen aus einer Tabelle SQL> DELETE FROMdepartment 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. SQL> DELETE FROMdepartment 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted. SQL> DELETE FROMdepartment; 4 rows deleted. SQL> DELETE FROMdepartment; 4 rows deleted.

19 9-19 Löschen von Zeilen basierend auf einer anderen Tabelle Nutze Subqueries in DELETE Befehlen, um Zeilen aus einer Tabelle zu löschen, basierend auf Werten aus einer anderen Tabelle. SQL> DELETE FROMemployee 2 WHEREdeptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES'); 6 rows deleted.

20 9-20 Löschen von Zeilen: Integrity Constraint Error SQL> DELETE FROMdept 2 WHEREdeptno = 10; SQL> DELETE FROMdept 2 WHEREdeptno = 10; DELETE FROM dept * ERROR at line 1: ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found DELETE FROM dept * ERROR at line 1: ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found You cannot delete a row that contains a primary key that is used as a foreign key in another table. You cannot delete a row that contains a primary key that is used as a foreign key in another table.

21 9-21 Datenbank-Transaktionen Besteht aus einem der folgenden Befehle: DML Befehle, die eine konsistente Datenänderung bilden Ein DDL Befehl Ein DCL Befehl Besteht aus einem der folgenden Befehle: DML Befehle, die eine konsistente Datenänderung bilden Ein DDL Befehl Ein DCL Befehl

22 9-22 Datenbank-Transaktionen Beginn bei der Ausführung des ersten ausführbaren SQL-Befehls. Endet mit einem der folgenden Ereignisse: – COMMIT oder ROLLBACK abgesetzt – DDL oder DCL Befehl (automatisches Commit) – Benutzer verläßt System – Systemzusammenbruch Beginn bei der Ausführung des ersten ausführbaren SQL-Befehls. Endet mit einem der folgenden Ereignisse: – COMMIT oder ROLLBACK abgesetzt – DDL oder DCL Befehl (automatisches Commit) – Benutzer verläßt System – Systemzusammenbruch

23 9-23 Vorteile von COMMIT und ROLLBACK Befehlen Sichern Datenkonsistenz Offene Änderungen werden dauerhaft gemacht oder zurückgesetzt Gruppieren logisch zusammen- hängende Operationen Sichern Datenkonsistenz Offene Änderungen werden dauerhaft gemacht oder zurückgesetzt Gruppieren logisch zusammen- hängende Operationen

24 9-24 DELETE Kontrolle von Transaktionen TransaktionTransaktion Savepoint A ROLLBACK to Savepoint B DELETE Savepoint B COMMIT INSERT UPDATE ROLLBACK to Savepoint A INSERTUPDATE INSERT ROLLBACK INSERT

25 9-25 Zustand der Daten vor dem COMMIT oder ROLLBACK Der vorherige Zustand kann wieder- hergestellt werden. Die Ergebnisse der DML-Operationen inner- halb der Transaktion können mittels SELECT ausgewertet werden. Andere Benutzer können nicht die Ergebnisse der DML-Befehle des aktuellen Benutzers sehen. Die betroffenen Zeilen sind gesperrt (locked); somit können keine anderen Benutzer Daten innerhalb dieser Sätze ändern. Der vorherige Zustand kann wieder- hergestellt werden. Die Ergebnisse der DML-Operationen inner- halb der Transaktion können mittels SELECT ausgewertet werden. Andere Benutzer können nicht die Ergebnisse der DML-Befehle des aktuellen Benutzers sehen. Die betroffenen Zeilen sind gesperrt (locked); somit können keine anderen Benutzer Daten innerhalb dieser Sätze ändern.

26 9-26 Zustand der Daten nach COMMIT Datenänderungen werden dauerhaft in der Datenbank. Der vorherige Zustand der Daten geht dauerhaft verloren. Alle Benutzer können die Ergebnisse sehen. Sperren auf den betroffenen Sätzen werden freigegeben; diese werden somit verfügbar für andere Benutzer. Datenänderungen werden dauerhaft in der Datenbank. Der vorherige Zustand der Daten geht dauerhaft verloren. Alle Benutzer können die Ergebnisse sehen. Sperren auf den betroffenen Sätzen werden freigegeben; diese werden somit verfügbar für andere Benutzer.

27 9-27 Ausführung eines Commits auf Daten SQL> UPDATEemp 2 SET deptno = 10 3 WHEREempno = 7782; 1 row updated. SQL> UPDATEemp 2 SET deptno = 10 3 WHEREempno = 7782; 1 row updated. Ausführung der Änderung. Commit der Änderung (Bestätigung). SQL> COMMIT; Commit complete.

28 9-28 Zustand der Daten nach ROLLBACK Verwerfen aller offenen Änderung durch Nutzung des ROLLBACK Befehls. Datenänderungen rückgängig machen. Vorherigen Zustand rekonstruieren. Sperren auf betroffenen Sätzen freigeben. Verwerfen aller offenen Änderung durch Nutzung des ROLLBACK Befehls. Datenänderungen rückgängig machen. Vorherigen Zustand rekonstruieren. Sperren auf betroffenen Sätzen freigeben. SQL> DELETE FROMemployee; 14 rows deleted. SQL> ROLLBACK; Rollback complete.

29 9-29 Lesekonsistenz Lesekonsistenz garantiert eine kon- sistente Sicht auf die Daten zu jeder Zeit. Änderungen eines Benutzer stehen nicht in Konflikt mit Änderungen durch andere Benutzer. Lesekonsistenz sichert auf den gleichen Daten: – Leser warten nicht auf Schreiber – Schreiben warten nicht auf Leser Lesekonsistenz garantiert eine kon- sistente Sicht auf die Daten zu jeder Zeit. Änderungen eines Benutzer stehen nicht in Konflikt mit Änderungen durch andere Benutzer. Lesekonsistenz sichert auf den gleichen Daten: – Leser warten nicht auf Schreiber – Schreiben warten nicht auf Leser

30 9-30 Implementierung der Lesekonsistenz UPDATE emp SET sal = 2000 WHERE ename = 'SCOTT'; 'SCOTT'; Daten- blöcke Rollback Segmente veränderte und unveränderte Daten “alte” Daten vor der Änderung Benutzer A Benutzer B Read consistent image SELECT * FROMemp;

31 9-31 Sperren (Locking) Oracle sperrt: Verhinderung von gegenseitigen Behinderungen gleichen Daten durch konkurrierende Transaktionen Erfordert keine Benutzeraktion Sperren werden während der Dauer der Transaktion gehalten Zwei Basismodi: – Exclusive – Share Oracle sperrt: Verhinderung von gegenseitigen Behinderungen gleichen Daten durch konkurrierende Transaktionen Erfordert keine Benutzeraktion Sperren werden während der Dauer der Transaktion gehalten Zwei Basismodi: – Exclusive – Share

32 9-32 Zusammenfassung Description Fügt eine neue Zeile in die Tabelle ein Modifiziert existierende Zeilen in der Tabelle Löscht existierende Zeilen aus der Tabelle Macht alle offenen Änderungen dauerhaft Erlaubt ein Rollback bis zu Sicherungspunkt. Verwerfen aller offenen Datenänderungen Statement INSERT UPDATE DELETE COMMIT SAVEPOINT ROLLBACK

33 9-33 Übungen Einfügen neuer Datensätze in Tabellen Ändern und Löschen von Datensätzen in der Tabelle Transaktionskontrolle Einfügen neuer Datensätze in Tabellen Ändern und Löschen von Datensätzen in der Tabelle Transaktionskontrolle


Herunterladen ppt "7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen."

Ähnliche Präsentationen


Google-Anzeigen