WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R 1.007 Vorlesung #8 SQL (Teil 5)

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Datenbank-programmierung
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
1 Datenbankapplikationen 9.1MS Visio 9.2MS Access 9.3Embedded SQL 9.4JDBC 9.5Cold Fusion 9.6PHP.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
PL/SQL - Kurze Einführung -.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SQL::Geschichte/Normen (Übersicht)
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Programmierung von Datenbank Anwendungen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Kapitel 8: Web-Anwendungen mit SQL und PHP
Kapitel 9: Integritätssicherung
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #10 Physische Datenorganisation.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #8 Wiederholung: Referentielle Integrität/ Embedded SQL.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
HORIZONT 1 XINFO ® Das IT - Informationssystem Eclipse Plugin HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Datenbanksysteme für hörer anderer Fachrichtungen
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Vorlesung #10 Physische Datenorganisation
Relationales Datenmodell und DDL
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Datenbankanbindung mit
Vorlesung #5 SQL (Teil 2).
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SQL-Prozeduren Charakteristika: Kapselung von SQL-Anweisungen in Prozeduren, die wiederholt aufgerufen werden können. Dazu Verbergen parametrisierter SQL-
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Datenbanken und Internet
SS 2015 – IBB4C Datenmanagement Fr 17:00 – 18:30 R Vorlesung #1 Datenmanagement.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
DB2 UDB im z/VSE Heinz Peter Maassen – Lattwein GmbH COURSE Tagung Bad Hersfeld 2008.
Thomas Tretter, 10. Februar 2004Oracle Label Security1 Oracle Label Security (fine grained access control) 10. Februar 2004.
Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #7 SQL (Teil 4).
Vorlesung #8 SQL (Teil 5).
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
 Präsentation transkript:

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, „Fahrplan“  Einschub: „Self Joins“ (relevant fürs Praktikum)  Dynamische Intergritätsbedingungen, das „Trigger“- Konzept von Oracle  Prozedurale Erweiterungen, Beispiel Oracle PL/SQL  Einbettung von SQL in Wirtssprachen, C, C++  ODBC – Open Database Connectivity  JDBC – Java Database Connectivity  SQLJ – Einbettung von SQL in Java  QBE – Query by Example  Datenbankanwendungen und Paradigmen  Fazit und Ausblick Vorlesung #9 Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Dynamische Integritätsbedingungen  Bedingungen an Zustandsänderungen bzw. Datenänderungen werden mittels Trigger überprüft. Man kann mit Triggern auch nachträgliche bzw. zusätzliche Berechnungen durchführen.  CREATE TRIGGER – eigenständiger Datenbankobjekt der einer Tabelle zugeordnet wird, d.h. auf eine Tabelle „aufpasst“  Auslöser wird definiert (before update, for each row)  Bedingungen gefolgt von Anweisungen Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Trigger in Oracle Syntax create or replace trigger keineDegradierung before update on Professoren for each row when (old.Rang is not null) begin if :old.Rang = 'C3' and :new.Rang = 'C2' then :new.Rang := 'C3'; end if; if :old.Rang = 'C4' then :new.Rang := 'C4'; end if; if :new.Rang is null then :new.Rang := :old.Rang; end if; end; Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Trigger in Oracle Syntax (2) CREATE [OR REPLACE] TRIGGER [schema.] trigger { BEFORE | AFTER | INSTEAD OF } { DELETE | INSERT | UPDATE [OF column [, column]...] } [FOR EACH ROW] [WHEN ( condition ) ] { pl/sql_block | call_procedure_statement } Vereinfacht – nur DML Events, man kann auch DDL abfangen Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Trigger in DB2 Syntax Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Prozedurale Erweiterung von SQL – Oracle PL/SQL  Trigger waren bzw. sind bereits prozedural!  Prozedurale Erweiterung ist notwendig  Aus theoretischer Sicht – um Touring- Vollständigkeit zu erreichen  Aus praktischer Sicht - um Probleme des Alltags, viel einfacher prozedural statt deklarativ zu lösen  Hauptbegriff: Datenbank Cursor  Dynamisches SQL in PL/SQL – würde hier den Rahmen sprengen Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Oracle PL/SQL  Prozedurale Erweiterung von SQL  Beispiel: Funktion Summe - rekursiv CREATE FUNCTION Summe1 (n INTEGER) RETURN INTEGER IS BEGIN IF n = 0 THEN return 0; ELSIF n = 1 THEN return 1; ELSIF n > 1 THEN return n + Summe1(n - 1); END IF; END; Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Oracle PL/SQL (2)  nicht rekursiv FUNCTION Summe2(n INTEGER) RETURN INTEGER IS result INTEGER DEFAULT 0; v_n INTEGER DEFAULT n; BEGIN WHILE v_n >= 0 LOOP result := result + v_n; v_n := v_n - 1; END LOOP; return result; END;   nicht rekursiv, schlau FUNCTION Summe3(n INTEGER) RETURN INTEGER IS BEGIN RETURN (n*(n+1))/2; END; Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Einbettung in Wirtssprachen „Embedded SQL“ Mit Hilfe eines Präcompilers!!! #include exec sql begin declare section; varchar user_passwd[30]; int exMatrNr; exec sql end declare section; exec sql include SQLCA; main() { printf("Name/Password:"); scanf("%", user_passwd.arr); Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Einbettung in Wirtssprachen „Embedded SQL“ (2) user_passwd.len=strlen(user_passwd.arr); exec sql wheneversqlerror goto error; exec sql connect :user_passwd; while (1) { printf("Matrikelnummer (0 zum beenden):"); scanf("%d", &ecMatrNr); if (!exMatrNr) break; exec sql delete from Studenten where MatrNr= :exMatrNr; } exec sql commit work release; exit(0); Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Einbettung in Wirtssprachen „Embedded SQL“ (3) error: exec sql whenever sqlerror continue; exec sql rollback work release; printf("fehler aufgetreten!\n"); exit(-1); } Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Datenbankanbindungen  ODBC (Open Database Connecticity)  Anbindung von Windows-Programmen  Beispiel –Excel Zugriff auf Oracle  JDBC (Java Database Connectivity)  Eigentlich ein CLI Call-Level Interface  SQLJ  Echte Einbettung von SQL in Java, wie C, C++  Wichtig bei allen Schnittstellen: immer an die Voreinstellungen denken  was passiert bei einem Fehler  gibt es automatisch einen COMMIT oder ROLLBACK Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Abgrenzung: Datenbanken vs. Anwendungen  Marktbeherrschende Datenbanken beinhalten heute bereits  Eingebaute und erweiterbare SQL Funktionen und Prozeduren als prozedurale Erweiterung  XML und Java  Standardschnittstellen zu jeder wichtigen Programmiersprache (Fortran, Cobol, C, C++)  Eingebaute Funktionen für Volltextsuche, Geodaten, OLAP, Data Mining, Web usw.  Objekte, benutzerdefinierte Datentypen  Wo ist die Grenze zwischen einer Datenbank und einer „klassischen“ Anwendung? Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R © Bojan Milijaš, Wohin mir der Logik? Datenbank oder Anwendung  Man entscheidet sich für die Datenbank  Wenn man aus Performance-, Skalierbarkeit-, Sicherheits- oder Verfügbarkeitsgründen eine (bestimmte) Datenbank wählen muss  Wenn man mit mehreren verschiedenen Anwendung gleichzeitig auf die Daten zugreifen möchte, so dass die Anwendungen „nur visualisieren“ und die Datenbank die Zugriffe und die Datenverarbeitung regelt  Man entscheidet sich für die Anwendung  Wenn man Datenbank-unabhängig bleiben möchte, d.h. die zugrundeliegende(n) Datenbank(en) lediglich als SQL- Datenablage betrachtet  Wenn eine Datenbankzentralisierung aus finanziellen oder technischen Gründen keinen Sinn macht Vorlesung #8 - SQL (Teil 5)

WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 Ende