10. Programmieren in SQL

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

Prozedurale Datenbank- Anwendungsprogrammierung

5.8 Bibliotheken für PostgreSQL

Objektrelationale und erweiterbare Datenbanksysteme

4. Structured Query Language (SQL)

Entwicklungsumgebung für die Laborübung

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

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

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

SQL structured query language

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

Microsoft SQL-Server Enterprise-Manager

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

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

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

Datenbanksysteme Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück

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

Datenbanksysteme Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datumsangaben, enthält mindestens Jahr, Monat, Tag

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Referentielle Integrität

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #5. SQL (Teil 3)

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler

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

Datenbanken (WS 2015/2016)

Views in SQL. 2 Anlegen und Verwenden von Views 2

Datenbankprogrammierung 1

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

11 Funktionen Vorteile von Funktionen. Leseprobe aus Access und SQL Server

SQL (Structured Query Language) Schemata Datentypen

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

11 Anwendungsprogrammierung

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

Vorbereitungen zum 3. Praktikum (PL/SQL):

PostgreSQL unter Debian Linux

Referentielle Integrität

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

SQL und MySQL. Kristian Köhntopp

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

VO Datenmodellierung. Katrin Seyr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

NoSQL mit Postgres 15. Juni 2015

Einführung in PL/SQL

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

Einstieg in das SQL- und Datenbanktuning Loblied auf den Tabellen-Index!

Datenbanksysteme 2015

Inhaltsverzeichnis. jetzt lerne ich

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

Kontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe

Datenbanksysteme 2011

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Objektrelationale Datenbanken

Übungsblatt 8- Lösungsvorschlag

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

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

Strukturierte Objekttypen

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

DB2 SQL, der Systemkatalog & Aktive Datenbanken

desk.modul : WaWi- Export

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

Kapitel DB:VI (Fortsetzung)

Es wird empfohlen folgendes Material anzusehen:

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

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

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

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

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac.

Microsoft SQL Server 2000 Programmierung

SQL-Anweisungen. SELECT (SQL Data Query Language)

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Lösungen der Übungsaufgaben von Kapitel 10

Struktur von PL/SQL. Oracle PL/SQL Die Programmiersprache von Oracle. Ein Beispiel. Bildschirmausgabe. Using Oracle PL/SQL.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Datenbanken: Prozedurales SQL

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Grundlagen der Informatik 2

Datenintegrität. Bisherige Integritätsbedingungen

Datenbanken. Ein DBS besteht aus zwei Teilen:

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Begleitskript. zum PHP/MySQL. Kurs

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

ACCESS SQL ACCESS SQL

Objektrelationale, erweiterbare Datenbanken WS 04/05

Grundkonzepte von SQL

Cassandra Query Language (CQL)

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Transkript:

10. Programmieren in SQL

Inhalt 10.1 Motivation 10.2 Prozedurale Erweiterungen von SQL 10.3 Gespeicherte Prozeduren 10.4 Benutzerdefinierte Funktionen 10.5 Verwendung anderer Programmiersprachen 2

10.1 Motivation SQL als interaktive Anfragesprache für menschliche Benutzer oder Anwendungsprogramme entworfen Komplexe Operationen lassen sich nicht (leicht) in einem einzelnen SQL-Kommando ausdrücken, so dass sie in mehrere Kommandos zerlegt und deren Ablauf durch ein Anwendungsprogramm gesteuert werden muss Kapitel 11 behandelt die Implementierung solcher Anwendungsprogramme (z.b. in Java oder C), die von außen auf die Datenbank zugreifen 3

Motivation Erweiterung von SQL um prozedurale Sprachelemente (z.b. Bedingungen und Schleifen) zur Implementierung gespeicherter Prozeduren (stored procedures) und benutzerdefinierter Funktionen (user-defined functions) zur Implementierung komplexer Operationen im RDBMS Gespeicherte Prozeduren erlauben, neben den Daten, auch Funktionalität der modellierten Anwendung (business logic) redundanzfrei und zentral im RDBMS abzubilden 4

Motivation Vorteile gespeicherter Prozeduren gegenüber einer Implementierung in Anwendungsprogramm sind u.a. Kapselung und zentrale Bereitstellung von Funktionalität (business logic) im RDBMS Ausführung direkt im RDBMS und damit häufig auf leistungsstarker Server-Hardware Reduzierung der Netzwerklast, da Daten nicht zum Client transferiert werden müssen Automatische Optimierung durch den Anfrageoptimierer des RDBMS möglich 5

Gespeicherte Prozeduren Gespeicherte Prozeduren (stored procedures) können einen Rückgabewert haben ändern meist die gespeicherten Daten typische Anwendung ist die Stapelverarbeitung, d.h. die Prozedur kapselt eine Folge nacheinander auszuführender Kommandos Implementierung in prozeduraler Erweiterung von SQL (z.b. Transact-SQL bei MS SQL Server) oder anderer Programmiersprache nicht in anderen SQL-Kommandos verwendbar 6

Gespeicherte Prozeduren Beispiel: Bereinigung Hochschuldaten zu Semesterbeginn Erhöhe das Semester aller Studenten um 1 Lösche Studenten, deren Semester danach größer als 30 ist; ihre Einträge in hören sollen mittels eines geeigneten FOREIGN KEY Constraints entfernt werden Lösche Vorlesungen, die von keinem Studenten gehört werden und die kein Professor liest 7

Benutzerdefinierte Funktionen Benutzerdefinierte Funktionen (user-defined functions) berechnen einen Rückgabewert ändern die gespeicherten Daten nicht typische Anwendung ist das Bereitstellen von Funktionalität, die das RDBMS nicht mitbringt (z.b. statistische Funktionen, Umwandlung von Zeichenketten), welche wiederverwendet werden kann Implementierung in prozeduraler Erweiterung von SQL (z.b. Transact-SQL) oder anderer Programmiersprache in anderen SQL-Kommandos verwendbar 8

Benutzerdefinierte Funktionen Beispiele in Hochschulanwendung: Abkürzung von Vorlesungstiteln mittels Ersetzungsregeln Einführung wird zu Einf. in die wird zu i.d. Grundlagen wird zu Grdl. Eingabe ist Vorlesungstitel; Ausgabe ist seine Abkürzung Berechnung eines gewichteten Notendurchschnitts unter Berücksichtigung der Semesterzahl Prüfungsergebnisse sollen mit SWS gewichtet werden -0.3 Abzug je Semester unter Regelstudienzeit Eingabe ist Matrikelnummer; Ausgabe ist Notendurchschnitt 9

10.2 Prozedurale Erweiterungen von SQL Erweiterung von SQL um prozedurale Sprachelemente (z.b. Bedingungen und Schleifen) SQL/PSM als Bestandteil des SQL-Standards (seit 1996) PL/SQL bei Oracle SQL PL bei IBM PL/pgSQL bei PostgreSQL Transact-SQL bei Microsoft Systemspezifische Sprachen vor Standard entstanden; zunehmenden Unterstützung des SQL/PSM-Standards 10

Transact-SQL Wir betrachten Transact-SQL als prozedurale Erweiterung von SQL in Microsoft SQL Server etwas genauer Transact-SQL erweitert SQL um folgende Konzepte Meldungen/Ausgaben an den Benutzer lokale und globale Variablen Bedingungen Kommentare Datentypen Schleifen Cursor 11

Kommentare Transact-SQL kennt zwei Arten von Kommentaren Zeilenkommentar (--) 1 -- Diese Zeile wird bei der Ausführung ignoriert Blockkommentar (/*... */) 1 /* 2 * 3 * Alle Zeilen werden bei der Ausführung ignoriert 4 * 5 */ 12

Stapelverarbeitung Stapelverarbeitung als einfache Anwendung, d.h. es wird eine Folge von SQL-Kommandos ausgeführt 1 -- Tabelle Vorlesungen anlegen 2 CREATE TABLE Vorlesungen ( 3 VorlNr int NOT NULL, 4 Titel varchar(30) NOT NULL, 5 SWS int NOT NULL, 6 ProfNr int, 7 PRIMARY KEY(VorlNr) 8 ) 9 10 -- Vorlesungen einfügen 11 INSERT INTO Vorlesungen (VorlNr, Titel, SWS, ProfNr) 12 VALUES (1, Datenbanken, 4, NULL) 13 INSERT INTO Vorlesungen (VorlNr, Titel, SWS, ProfNr) 14 VALUES (2, Programmierung, 4, NULL) 13

Datentypen Transact-SQL unterstützt von SQL bekannte Datentypen bigint (8 Bytes) und int (4 Bytes) für ganze Zahlen float und real für Gleitkommazahlen money (4 Nachkommastellen) char(n) als Zeichenkette fester Länge varchar(n) als Zeichenkette variabler Länge 14

Variablen Transact-SQL unterscheidet lokale und globale Variablen Globale Variablen werden vom System bereitgestellt und sind am Präfix @@ im Namen zu erkennen, z.b. @@SERVERNAME liefert Name des Servers @@VERSION liefert Version des Servers @@ERROR liefert Ausführungscode der letzten Anweisung @@ROWCOUNT als Anzahl von Zeilen, welche die letzte Anweisung erzeugt hat 15

Variablen Lokale Variablen müssen deklariert werden und sind am Präfix @ im Namen zu erkennen Deklaration lokaler Variable mittels DECLARE 1 DECLARE @Variable1 Typ1, @Variable2 Typ2,... Lokale Variablen haben initial den Wert NULL Wertzuweisung an lokale Variable mit SET oder SELECT 1 SET @Variable1=Wert1 2 SELECT @Variable1=Wert1 16

Variablen Beispiel: Deklaration von drei Variablen @a, @b und @c vom Typ int, gefolgt von Wertzuweisungen 1 DECLARE @a int, @b int, @c int 2 SET @a=1 3 SET @b=2 4 SET @c=@a+@b 17

Variablen Variable kann Ergebnis eines SELECT-Kommandos als Wert zugewiesen werden, sofern dies aus einem einzigen Wert besteht Beispiel: 1 DECLARE @anzahl_studenten int 2 SET @anzahl_studenten = 3 ( SELECT COUNT(*) FROM Studenten) 18

Meldungen Meldungen, z.b. zum Generieren von Berichten, können mittels PRINT an den Benutzer ausgegeben werden 1 PRINT Hello World Zeichenketten können mittels + konkateniert werden; Variablen anderen Typs müssen mittels CAST in eine Zeichenkette umgewandelt werden 1 DECLARE @num int 2 SET @num = 13 3 PRINT Hello User + CAST(@num AS varchar) +! 19

Anweisungsblöcke Block von Anweisungen mit BEGIN... END definierbar 1 BEGIN 2 UPDATE Studenten SET Semester = Semester + 1 3 DELETE FROM Studenten WHERE Semester > 30 4 END Strichpunkt zum Trennen der Anweisungen verwendbar Verwendung als Teil von Bedingungen und Schleifen 20

Bedingungen Transact-SQL stellt mit IF... ELSE ein Kommando zur bedingten Ausführung von Anweisungsblöcken bereit 1 IF <Bedingung> 2 <Anweisung oder Anweisungsblock> 3 ELSE 4 <Anweisung oder Anweisungsblock> Beispiel: 1 IF EXISTS ( SELECT * FROM Professoren WHERE Name = Simpson ) 2 BEGIN 3 PRINT Es gibt einen Professor namens Simpson 4 PRINT Ob sein Vorname Homer ist? 5 END 6 ELSE 7 PRINT Es gibt keinen Professor namens Simpson 21

Konditionale Transact-SQL unterstützt mittels des CASE Kommandos bedingte Ausdrücke, sogenannte Konditionale 1 CASE <Variable> 2 WHEN <Wert1> THEN <Rückgabe1> 3 WHEN <Wert2> THEN <Rückgabe2> 4 END Konditional wertet zu einem Rückgabewert aus und dient, im Gegensatz zu IF... ELSE, nicht zur Ablaufsteuerung 22

Schleifen Transact-SQL verfügt mit WHILE über ein Kommando zur wiederholten Ausführung eines Anweisungsblocks 1 WHILE <Bedingung> 2 <Anweisung oder Anweisungsblock> Zusätzlich kann die Schleife mit dem Kommando BREAK beendet werden; mit dem Kommando CONTINUE wird ein neuer Schleifendurchlauf gestartet 23

Schleifen Beispiel: Gebe Zahlen von 1 bis 10 aus 1 DECLARE @i int 2 SET @i = 1 3 WHILE @i <= 10 4 BEGIN 5 PRINT CAST(@i AS VARCHAR) 6 7 PRINT CASE @i 8 WHEN 1 THEN ist die erste Zahl 9 WHEN 10 THEN ist die letzte Zahl 10 END 11 12 SET @i = @i + 1 13 END 24

Dynamische Befehlsausführung Transact-SQL erlaubt mittels des Kommandos EXECUTE das Aufrufen einer gespeicherten Prozedur bzw. das Ausführen eines als Zeichenkette hinterlegten Kommandos 1 DECLARE @order varchar(30) 2 DECLARE @command varchar(100) 3 4 SET @order = DESC 5 SET @command SELECT * FROM Kunden ORDER BY Name + @order 6 7 EXECUTE(@command) 25

Zusammenfassung Prozedurale Erweiterungen von SQL erlauben die Implementierung komplexer Operationen (business logic) innerhalb des RDBMs Syntax der Erweiterungen ist stark systemabhängig; Transact-SQL als Sprache von MS SQL Server Gespeicherte Prozeduren (z.b. zur Stapelverarbeitung) und benutzerdefinierte Funktionen (z.b. zur Erweiterung des Funktionsumfangs des RDBMS) 26

Literatur [1] A. Kemper und A. Eickler: Datenbanksysteme Eine Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 12) [2] G. Saake, K.-U. Sattler und A. Heuer: Datenbanken - Konzepte und Sprachen, mitp Professional, 2013 (Kapitel 13) [3] K. Huckert: Relationale Datenbanken, htw saar, 2013 http://www1.htwsaar.de/~braun/uebungen/datenbanken/ (Kapitel 8) 27