WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #6. SQL (Teil 4)



Ähnliche Dokumente
Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

2. Datenbank-Programmierung

Referentielle Integrität

Prozedurale Datenbank- Anwendungsprogrammierung

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Referentielle Integrität

Gesicherte Prozeduren

SQL (Structured Query Language) Schemata Datentypen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

3. Stored Procedures und PL/SQL

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

SEMINAR Modifikation für die Nutzung des Community Builders

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Übungsblatt 8- Lösungsvorschlag

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Algorithmen und Datenstrukturen

Datenintegrität. Bisherige Integritätsbedingungen

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

SQL. Fortgeschrittene Konzepte Auszug

Informatik 12 Datenbanken SQL-Einführung

Erwin Grüner

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Grundlagen der Informatik 2

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Oracle: Abstrakte Datentypen:

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

WDSOFT-WIN. CRM-Schnittstelle. Anleitung für den Anwender zur Benutzung des Client-Programms. WDSOFT WIN CRM-Schnittstelle. Stand:

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Professionelle Seminare im Bereich MS-Office

Was meinen die Leute eigentlich mit: Grexit?

Excel Funktionen durch eigene Funktionen erweitern.

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

PostgreSQL und memcached

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Was ist Logische Programmierung?

PostgreSQL in großen Installationen

Updatehinweise für die Version forma 5.5.5

Views in SQL. 2 Anlegen und Verwenden von Views 2

3.17 Zugriffskontrolle

Fachhochschule Deggendorf Platzziffer:...

Datenbanken und Informationssysteme II

6. Datenintegrität. Integritätsbedingungen

10.6 Programmier-Exits für Workitems

Internet Explorer Version 6

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

cs241: Datenbanken mit Übungen HS 2011

Übersicht Programmablaufsteuerung

Einführung in. Logische Schaltungen

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Zur drittletzten Zeile scrollen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Referenzielle Integrität SQL

Oracle Forms. Aufbau und Bestandteile von Formularen. Erstellen eines neuen Blocks. Starten von Oracle Forms

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java.

NoSQL mit Postgres 15. Juni 2015

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Datumsangaben, enthält mindestens Jahr, Monat, Tag

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Client-Server-Beziehungen

Datenbanksysteme SS 2007

Zwischenablage (Bilder, Texte,...)

Objektrelationale und erweiterbare Datenbanksysteme

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

desk.modul : WaWi- Export

Java Kurs für Anfänger Einheit 5 Methoden

Seminar Informationsintegration und Informationsqualität. Dragan Sunjka. 30. Juni 2006

Transparente Hausverwaltung Marketingschmäh oder doch: eine neue Dimension der Dienstleistung?

Implementierungsvarianten. mit Oracle Application Express

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Kurzeinführung LABTALK

Entwicklungsumgebung für die Laborübung

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Transkript:

Vorlesung #6 SQL (Teil 4)

Fahrplan Besprechung der Übungsaufgaben 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 ODBC Java Database Connectivity SQLJ Einbettung von SQL in Java QBE Query by Example Datenbankanwendungen und Paradigmen Fazit und Ausblick Vorlesung #10 Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 2

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 3

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; Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 4

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 5

Trigger in DB2 Syntax Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 6

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 7

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 8

Oracle PL/SQL (2) nicht rekursiv nicht rekursiv, schlau 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; FUNCTION Summe3(n INTEGER) RETURN INTEGER IS BEGIN RETURN (n*(n+1))/2; END; Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 9

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 10

Oracle PL/SQL Beispiel: man verfügt über eine Tabelle (oder eine View über zwei Tabellen), die zu jedem Ort die zugehörige PLZ und das Bundesland beinhaltet Man möchte für jedes Bundesland PLZ Intervale bestimmen In SQL sehr umständlich, mit vielen unsauberen Hilfskonstrukten Wie bringt aber man aber Daten aus einer Tabelle in eine prozedurale Sprache hinein? Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 11

Deklarativ vs. Prozedural (2) Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 12

Deklarativ vs. Prozedural (3) PLZ Interval für jedes Bundesland Idee Sortiere nach PLZ Merke das Bundesland für die kleinste PLZ Bei jeder weiteren PLZ überprüfe ob sich das Bundesland geändert hat, d.h. vergleich das aktuelle Bundesland mit dem Bundesland des vorherigen Laufes Wenn ja, dokumentiere die Änderung Wiederhole bis zur größten PLZ Cursor-FOR oder Cursor-WHILE Schleife vorgestellt in der Vorlesung Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 13

Cursor Beispiel (3) CURSOR c_orte is select PLZ, Land from orte order by PLZ ASC; lv_c_orte c_orte%rowtype; BEGIN FOR lv_c_orte IN c_orte LOOP... Anweisungen, IT THEN ELSE usw.... END LOOP; END; Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 14

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 15

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 16

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 17

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 18

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 19

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 20

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 21

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 22

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 23

Bojan Milijaš, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 24

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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 25

Wohin mir der Logik? Datenbank oder Anwendung Man entscheidet sich für die Datenbank Wenn man aus Performance-, Skalierbarkeit-, Sicherheitsoder 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š, 19.11.2010 Vorlesung #6 - SQL (Teil 4) 26

Vorlesung #6 Ende