Vorlesung #8 SQL (Teil 5).

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Datenbank-programmierung
Advertisements

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
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
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
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.
15.1 Synchronisation nebenläufiger Prozesse
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
Datenintegrität Integitätsbedingungen Schlüssel
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 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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
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)
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
Structured Query Language
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
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)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Objektorientierte (OO) Programmierung
© 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.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
SQL Basics Schulung –
Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Darstellung der Relationenalgebra als Programmiersprache
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
Wirtschaftsinformatik
Vorlesung #7 SQL (Teil 4).
Create Table, Rechte und Rollen
Einschub Normalisierung-Denormalisierung
Installation und Beispiele
Vorlesung #5 Überführung (Fortsetzung) / Normalformen
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Syntax: while ( BEDINGUNG ) { // Anweisungen die so lange immer wieder ausgeführt // werden, wie die Bedingung zutrifft } for (INITIALISIERUNG; BEDINGUNG;
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
 Präsentation transkript:

Vorlesung #8 SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) „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 © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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 © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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'; if :new.Rang is null then :new.Rang := :old.Rang; end; © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Trigger in Oracle Syntax (2) Vereinfacht – nur DML Events, man kann auch DDL abfangen 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 } © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) Trigger in DB2 Syntax © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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 © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) 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; © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) 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; © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Einbettung in Wirtssprachen „Embedded SQL“ Mit Hilfe eines Präcompilers!!! #include <stdio.h> 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); © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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); © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Einbettung in Wirtssprachen „Embedded SQL“ (3) error: exec sql whenever sqlerror continue; exec sql rollback work release; printf("fehler aufgetreten!\n"); exit(-1); } © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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 © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 - SQL (Teil 5) © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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? © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

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 © Bojan Milijaš, 20.11.2015 Vorlesung #8 - SQL (Teil 5)

Vorlesung #8 Ende