10. Programmieren in SQL

Größe: px
Ab Seite anzeigen:

Download "10. Programmieren in SQL"

Transkript

1 10. Programmieren in SQL

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

3 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

4 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

5 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

6 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

7 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

8 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

9 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 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

11 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

12 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

13 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 ) 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

14 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

15 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. liefert Name des Servers liefert Version des Servers liefert Ausführungscode der letzten Anweisung als Anzahl von Zeilen, welche die letzte Anweisung erzeugt hat 15

16 Variablen Lokale Variablen müssen deklariert werden und sind am im Namen zu erkennen Deklaration lokaler Variable mittels DECLARE 1 Typ2,... Lokale Variablen haben initial den Wert NULL Wertzuweisung an lokale Variable mit SET oder SELECT

17 Variablen Beispiel: Deklaration von vom Typ int, gefolgt von Wertzuweisungen 1 int

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

19 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 int 2 = 13 3 PRINT Hello User + CAST(@num AS varchar) +! 19

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

21 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

22 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

23 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

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

25 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 varchar(30) 2 varchar(100) 3 4 = DESC 5 SELECT * FROM Kunden ORDER BY Name 6 7 EXECUTE(@command) 25

26 Cursor Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL Cursor sind grob vergleichbar mit Iteratoren in modernen Programmiersprachen wie Java; ein wichtiger Unterschied ist, dass prinzipiell auch eine Veränderung der zugrundeliegenden Daten möglich ist 26

27 Cursor Verwendung eines Cursors in Transact-SQL wie folgt 1. Definition des Cursors 2. Öffnen des definierten Cursors 3. Abrufen von Informationen aus dem Cursor (z.b. einer Datensatzes) und Durchführung der gewünschten Operationen 4. Schließen des Cursors 5. Löschen der Definition des Cursors 27

28 Definition eines Cursors Bei Definition eines Cursors ist festzulegen, ob er nur lesend oder auch schreibend auf das Ergebnis zugreift sich nur vorwärts oder auch rückwärts durch das Ergebnis bewegen kann zwischenzeitliche Datenänderungen im Ergebnis sehen soll 28

29 Definition eines Cursors Definition eines Cursors mittels DECLARE-Kommando 1 DECLARE <Name des Cursors> CURSOR 2 [ FORWARD_ONLY SCROLL] 3 [ STATIC KEYSET DYNAMIC FAST_FORWARD] 4 [ READ_ONLY SCROLL_LOCKS OPTIMISTIC] 5 FOR < SELECT Statement > Ob der Cursor nur lesend oder auch schreibend zugreift READ_ONLY : nur lesend SCROLL_LOCKS : schreibend mit Sperren OPTIMISTIC : schreibend ohne Sperren 29

30 Definition eines Cursors Definition eines Cursors mittels DECLARE-Kommando 1 DECLARE <Name des Cursors> CURSOR 2 [ FORWARD_ONLY SCROLL] 3 [ STATIC KEYSET DYNAMIC FAST_FORWARD] 4 [ READ_ONLY SCROLL_LOCKS OPTIMISTIC] 5 FOR < SELECT Statement > Ob sich Cursor nur vorwärts oder auch rückwärts bewegt FORWARD_ONLY : nur vorwärts SCROLL : vorwärts und rückwärts 30

31 Definition eines Cursors Definition eines Cursors mittels DECLARE-Kommando 1 DECLARE <Name des Cursors> CURSOR 2 [ FORWARD_ONLY SCROLL] 3 [ STATIC KEYSET DYNAMIC FAST_FORWARD] 4 [ READ_ONLY SCROLL_LOCKS OPTIMISTIC] 5 FOR < SELECT Statement > Ob der Cursor zwischenzeitliche Datenänderung sieht STATIC : es wird initial Kopie des Ergebnis erzeugt KEYSET : Kopie der Schlüssel, andere Attribute nachgelesen DYNAMIC : Änderungen ab aktueller Zeile sichtbar FAST_FORWARD : schreibgeschützt, nur in eine Richtung 31

32 Öffnen und Bewegen eines Cursors Öffnen eines Cursors mittels OPEN-Kommando 1 OPEN <Name des Cursors> Bewegen des Cursors erfolgt mittels FETCH-Kommandos 1 FETCH 2 [ NEXT PRIOR FIRST LAST ABSOLUTE n RELATIVE n] 3 FROM <Name des Cursors> 4 INTO <lokale Variable> NEXT liest nächste Zeile; PRIOR liest vorherige Zeile FIRST liest erste Zeile; LAST liest letzte Zeile ABSOLUTE n liest n-te Zeile (nur bei STATIC) RELATIVE n liest n-te Zeile vor/nach aktueller Zeile 32

33 Cursor-Status Beim Bewegen des Cursors wird in der globalen Variable ein Status zurückgegeben; dieser kann ausgelesen werden, um Fehler zu erkennen bzw. die Bewegung des Cursors zu steuern Werte der Variable 0 : alles in Ordnung -1 : Operation außerhalb des Cursors -2 : Zeile nicht vorhanden 33

34 Schließen und Entfernen eines Cursors Schließen eines Cursors mittels CLOSE-Kommando 1 CLOSE <Name des Cursors> Entfernen eines Cursors mittels DEALLOCATE-Kommando 1 DEALLOCATE <Name des Cursors> 34

35 Beispiel Cursor Beispiel: Gib die Namen und Vornamen aller Studenten in einem höheren als dem zehnten Semester aus 1 -- Cursor und lokale Variablen deklarieren 2 DECLARE StudentenCursor CURSOR FAST_FORWARD 3 FOR SELECT Vorname, Name FROM Studenten WHERE Semester > varchar(30) Zeilenweise Verarbeitung 8 OPEN StudentenCursor 9 FETCH NEXT FROM 10 WHILE(@@FETCH_STATUS = 0) 11 BEGIN 12 PRINT Vorname: 13 PRINT Name: 14 FETCH NEXT FROM 15 END Cursor schließen und entfernen 18 CLOSE StudentenCursor 19 DEALLOCATE StudentenCursor 35

36 Fehlerbehandlung Die globale Variable zeigt an, ob das letzte Transact-SQL-Kommando erfolgreich ausgeführt wurde; der Wert wird nach jedem Kommando neu zugewiesen Werte der Variable 0 : Kommando wurde erfolgreich ausgeführt > 0 : Kommando wurde nicht erfolgreich ausgeführt Im Fehlerfall verweist der Rückgabewert auf einen Eintrag in der Systemtabelle sys.messages, die genauere Informationen zum Fehler enthält 36

37 Beispiel Fehlerbehandlung Beispiel: Division durch 0 1 PRINT 1/0 -- gibt Wert 8134 zurück 1 SELECT * 2 FROM sys.messages 3 WHERE message_id = AND language_id = 1031 message id language severity is event logged text false Fehler aufgrund Division durch Null 37

38 Fehlerschwere Transact-SQL unterscheidet verschiedene Schweregrade (severity) von Fehler; eine Schwere höher als 10 führt zum Abbruch des Programms bzw. Sprung in CATCH-Block Schwere von Fehler (severity in sys.messages) 0-10 : Informationsmeldungen : Fehlerhaftes Programm (z.b. falsche Syntax) 17 : Mangelnde Ressourcen (z.b. Speicher) 18 : Problem im MS SQL Server 19 : Schwerer interner Fehler : Fataler Fehler 38

39 Fehlerbehandlung Transact-SQL verfügt, ähnlich Java, mit den Kommandos TRY und CATCH über einen Möglichkeit, Fehlern systematisch zu begegnen 1 BEGIN TRY Läuft der TRY-Block 2 <Transact-SQL Kommandos> 3 END TRY 4 BEGIN CATCH 5 <Transact-SQL Kommandos> 6 END CATCH ohne Fehler (0-10) ab, wird CATCH-Block nicht ausgeführt mit Fehler (11-16) ab, wird CATCH-Block ausgeführt mit fatalem Fehler (> 17) ab, wird Programm abgebrochen 39

40 Fehlerbehandlung Innerhalb eines CATCH-Blocks stehen folgende Funktionen zur Verfügung, um mehr über den Fehler zu erfahren ERROR_LINE() gibt Zeile an, in der Fehler auftrat ERROR_MESSAGE() gibt Fehlermeldung aus ERROR_NUMER() gibt Fehlercode aus ERROR_SEVERITY() gibt Schwere des Fehlers aus ERROR_STATE() gibt Status zurück 40

41 Beispiel Fehlerbehandlung Beispiel: Anfrage mit ungültigem Attributnamen gibt aus 1 BEGIN TRY 2 SELECT * 1 ErrorCode: FROM Studenten 4 WHERE ProfNr = 42 5 END TRY 6 BEGIN CATCH 7 8 PRINT ERROR_MESSAGE() 9 END CATCH 2 Error: Ungültiger Spaltenname ProfNr. 41

42 10.3 Gespeicherte Prozeduren Gespeicherte Prozeduren (stored procedures) kapseln Funktionalität (business logic) zentral im RDBMS können einen Rückgabewert haben dürfen die gespeicherte Daten ändern können nicht in anderen SQL-Kommandos (z.b. SELECT) verwendet werden können in prozeduraler Erweiterung von SQL (z.b. Transact-SQL) oder anderer Sprache implementiert werden 42

43 Anlegen einer gespeicherten Prozedur Gespeicherte Prozedur lässt sich in MS SQL Server anlegen mittels CREATE PROCEDURE 1 CREATE PROCEDURE <Name der Prozedur> 2 [@Parameter1 Typ1 = Default1... ] 3 [@ParameterN TypN = DefaultN OUTPUT] 4 AS 5 <Folge von Transact-SQL Kommandos> Beispiel: Löschen aller Datensätze in Tabelle hören 1 CREATE PROCEDURE HörenLöschen int = 0 OUTPUT 3 AS 4 DELETE FROM hören 5 43

44 Ändern, Löschen und Anzeigen von Prozeduren Ändern mittels ALTER PROCEDURE 1 ALTER PROCEDURE <Name der Prozedur> Löschen mittels DROP PROCEDURE 1 DROP PROCEDURE <Name der Prozedur> Anzeigen aller gespeicherten Prozeduren 1 SELECT * 2 FROM sys.sysobjects 3 WHERE type = p 44

45 Parametrisierung Gespeicherte Prozeduren können mehrere Parameter als Eingabe und einen Parameter als Ausgabe haben Parameter können mit Vorgabewert belegt werden; dieser wird verwendet, wenn kein Wert angegeben wird Beispiel: Erhöhung des Semesters eines Studenten 1 CREATE PROCEDURE int = 1 2 AS 3 UPDATE Studenten 4 SET Semester = Semester 5 WHERE MatrNr 1 EXECUTE SemesterErhöhen führt Erhöhung um 1 durch 2 EXECUTE SemesterErhöhen , 2 -- führt Erhöhung um 2 durch 45

46 Festlegen des Rückgabewerts Rückgabewert einer gespeicherten Prozedur wird mit OUTPUT unter den Parametern festgelegt Endet die Ausführung der Prozedur, wird der aktuelle Wert des mit OUTPUT markierten Parameters zurückgegeben Mittels RETURN kann die Ausführung der Prozedur beendet und ein Wert zurückgegeben werden; auch ohne Wert kann so die Prozedur beendet werden 46

47 Festlegen des Rückgabewerts Beispiel: Ermittle Zahl der Studenten in einem Semester Variante 1 mit OUTPUT Parameter 1 CREATE PROCEDURE StudentenAnzahl int int OUTPUT 4 AS 5 = (SELECT COUNT(*) FROM Studenten WHERE Semester Variante 2 mit RETURN 1 CREATE PROCEDURE StudentenAnzahl int 3 AS 4 int 5 = (SELECT COUNT(*) FROM Studenten WHERE Semester 6 47

48 10.4 Benutzerdefinierte Funktionen Benutzerdefinierte Funktionen (user-defined functions) berechnen einen Rückgabewert dürfen die gespeicherten Daten nicht ändern können in anderen SQL-Kommandos (z.b. SELECT) verwendet werden können in prozeduraler Erweiterung von SQL (z.b. Transact-SQL) oder anderer Sprache implementiert werden 48

49 Anlegen einer benutzerdefinierten Funktion Benutzerdefinierte Funktion lässt sich in MS SQL Server mittels CREATE FUNCTION anlegen 1 CREATE FUNCTION <Name der Funktion> 2 [@Parameter1 Typ1 = Default1... ] 3 RETURNS RückgabeTyp 4 AS 5 BEGIN 6 <Folge von Transact-SQL Kommandos> 7 RETURN <Wert von RückgabeTyp> 8 END Funktionen können skalaren Wert (z.b. vom Typ int) oder eine Tabelle (dann Rückgabewert TABLE) zurückgeben 49

50 Ändern, Löschen und Anzeigen von Funktionen Ändern mittels ALTER FUNCTION 1 ALTER FUNCTION <Name der Funktion> Löschen mittels DROP FUNCTION 1 DROP FUNCTION <Name der Funktion> Anzeigen aller Funktionen mit skalarem Rückgabewert 1 SELECT * FROM sys.sysobjects WHERE type = FN Anzeigen aller Funktionen mit Tabelle als Rückgabewert 1 SELECT * FROM sys.sysobjects WHERE type = IF 50

51 Beispiel Funktion mit skalaren Rückgabewert Beispiel: Studienjahre aus gegebenem Semester 1 DECLARE FUNCTION int 2 RETURNS int 3 AS 4 BEGIN 5 RETURN CEILING(@Semester / 2) -- Aufrunden 6 END Funktion Studienjahre() kann nun z.b. in einem SELECT-Kommando verwendet werden 1 SELECT * 2 FROM Studenten 3 WHERE Studienjahre(Semester) > 5 51

52 Beispiel Funktion mit Tabelle als Rückgabewert Beispiel: Studenten in gegebenem Fach 1 DECLARE FUNCTION varchar(10) 2 RETURNS TABLE 3 AS 4 BEGIN 5 RETURN ( SELECT * FROM Studenten WHERE Fach 6 END 52

53 10.5 Verwendung anderer Programmiersprachen Gespeicherte Prozeduren und benutzerdefinierte Funktionen lassen sich je nach RDBMS auch in anderer Programmiersprache als der jeweiligen prozeduralen Erweiterung von SQL implementieren, z.b..net Sprachen (C#, Visual Basic, F#) bei MS SQL Server Java bei Oracle Sowohl bei MS SQL Server wird Prozedur bzw. Funktion in eigener Umgebung (CLR bzw. VM) ausgeführt, um eine Abschirmung vom RDBMS selbst zu erreichen und so Abstürze zu vermeiden 53

54 Verwendung anderer Programmiersprachen Schritte zur Implementierung einer Prozedur bzw. Funktion in einer anderen unterstützten Programmiersprachen Implementierung auf lokalem Rechner Installation auf RDBMS-Server, d.h. Übertragen der Binaries Registrierung im RDBMS-Server Aufruf der Prozedur bzw. Funktion 54

55 Beispiel UDF in C# Beispiel: Studienjahre aus gegebenem Semester in C# 1 using Math; 2 using System; 3 using Microsoft.SqlServer.Server; 4 5 public static class HochschulUDFs 6 { 7 [SqlFunction] 8 public static int StudienJahre(int semester) 9 { 10 return ( int)math.ceiling(semester / 2); 11 } 12 } Nach Installation und Registrierung bei MS SQL Server (über das SQL Server Management Studio), wird die Funktion mittels [dbo].studienjahre() aufgerufen 55

56 Zusammenfassung Cursor erlauben die zeilenweise Verarbeitung des Ergebnis eines SELECT-Kommandos in Transact-SQL Fehlerbehandlung mittels TRY- und CATCH-Blöcken Parametrisierung von gespeicherten Prozeduren mit Standardwerten und Rückgabeparameter Gespeicherte Prozeduren und benutzerdefinierte Funktionen lassen sich je nach System in anderen Sprachen (z.b..net oder Java) implementieren 56

57 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, (Kapitel 8) 57

10. Programmieren in SQL

10. Programmieren in SQL 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

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert

Mehr

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

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung 6. Datenintegrität Motivation Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung nur sinnvolle Attributwerte (z.b. keine negativen Semester) Abhängigkeiten

Mehr

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

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer

PL/pgSQL. VL Datenbanksysteme. Ingo Feinerer PL/pgSQL VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung Einführung PL/pgSQL-Programmteile

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Objektrelationale und erweiterbare Datenbanksysteme

Objektrelationale und erweiterbare Datenbanksysteme Objektrelationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 (Objekt-relationale Modellierung) In der Vorlesung werden nur die Folien 1-12 behandelt. Kapitel 14 1 Konzepte objekt-relationaler

Mehr

Kapitel 4 Dynamisches SQL

Kapitel 4 Dynamisches SQL Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester 2007/08

Mehr

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen Explizite Jedes SQL Statement, das der Oracle Server ausführt, hat einen individuellen, der verbunden ist mit: Implizitem : Declariert für alle DML-Statements und PL/SQL SELECT Statements. Explizitem :

Mehr

Entwicklungsumgebung für die Laborübung

Entwicklungsumgebung für die Laborübung Entwicklungsumgebung für die Laborübung VU Datenbanksysteme Wolfgang Fischl Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

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

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger

Mehr

4. Structured Query Language (SQL)

4. Structured Query Language (SQL) 4. Structured Query Language (SQL) Rückblick Konzeptuelles Modell (ERM) können wir nun in (wenige) Relationen übersetzen Relationale Algebra gibt uns eine Sprache an die Hand, mit der wir Anfragen auf

Mehr

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

4. Objektrelationales Typsystem Kollektionstypen. Nested Table Nested Table Bei einer Nested Table handelt es sich um eine Tabelle als Attributwert. Im Gegensatz zu Varray gibt es keine Beschränkung bei der Größe. Definition erfolgt auf einem Basistyp, als Basistypen

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

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

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2013 Kapitel 7: SQL Vorlesung vom 6.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Sprung Transititve Hülle SQL 1970 Edgar Codd: A relational model for large shared

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler

PL/pgSQL. VU Datenbanksysteme. Reinhard Pichler PL/pgSQL VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester 2015/16 Gliederung Einführung

Mehr

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

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Microsoft SQL-Server 2000. Enterprise-Manager

Microsoft SQL-Server 2000. Enterprise-Manager Kapitel 7: SQL Microsoft SQL-Server 2000 Server: Client: Enterprise-Manager Query-Analyzer Installation Query Analyzer Tunnel mit Putty Tunnel mit Putty SQL: Geschichte 1970: System R mit Abfragesprache

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Prozedurale SQL-Erweiterungen

Prozedurale SQL-Erweiterungen Prozedurale SQL-Erweiterungen Prozedurale SQL-Erweiterungen unterscheiden sich typischerweise durch die folgenden Punkte von dem Ansatz der Einbettung: Neue dedizierte Sprache mit direkter Integration

Mehr

5.8 Bibliotheken für PostgreSQL

5.8 Bibliotheken für PostgreSQL 5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9

Mehr

Dynamische Ausführung/ Dynamic Execution. Cursors

Dynamische Ausführung/ Dynamic Execution. Cursors Dynamische Ausführung/ Dynamic Execution. Cursors Transact-SQL Server Stored Procedures / Datenbankprozeduren Eine gespeicherte Prozedur entspricht einer oder mehreren Transact-SQL-Anweisungen, die als

Mehr

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO; phpmyadmin SQL Dump version 3.2.4 http://www.phpmyadmin.net Host: localhost Erstellungszeit: 13. April 2011 um 18:44 Server Version: 5.1.41 PHP-Version: 5.3.1 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

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

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

Mehr

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

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

Mehr

Relationales Datenbanksystem Oracle

Relationales Datenbanksystem Oracle Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information

Mehr

11 Anwendungsprogrammierung

11 Anwendungsprogrammierung 11 11 11.1 Programmiersprachenanbindung 11.2 11.3 183 11 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele:

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Rückblick: Datenbankentwurf

Rückblick: Datenbankentwurf Rückblick: Datenbankentwurf Entity-Relationship-Modell für konzeptuellen Entwurf Entitytypen (entity types) (z.b. Studenten) Beziehungstypen (relationships) (z.b. hören) Attribute beschreiben Gegenstände

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Vorbereitungen zum 3. Praktikum (PL/SQL):

Vorbereitungen zum 3. Praktikum (PL/SQL): Vorbereitungen zum 3. Praktikum (PLSQL): SQL ist eine nicht-prozedurale Sprache der 4. Generation, die es nicht erlaubt, Elemente von 3.-Generation-Sprachen (Schleifen, Verzweigungen, etc.) zu benutzen.

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

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

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13 Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel

Mehr

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

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken Rückblick Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken Data Definition Language zur Schemadefinition (z.b. CREATE TABLE zum Anlegen von Tabellen) Data

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

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

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

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

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

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

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #6. SQL (Teil 4) 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,

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

Datenbanken 1 und Objektorientierte Datenbanken

Datenbanken 1 und Objektorientierte Datenbanken Struktur eines PLSQL Blocks DECLARE Definition und Initialisierung 1 der im Block benutzten Variablen und Cursors EXCEPTION Wertzuweisungen, Operationen

Mehr

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

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

Mehr

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

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 8 Hausaufgabe 1 Übung zur Vorlesung Grundlagen: Datenbanken im WS13/14 Henrik Mühe (muehe@in.tum.de)

Mehr

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

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal,

Mehr

Datenbankprogrammierung 1

Datenbankprogrammierung 1 Datenbankprogrammierung 1 Die Folien basieren auf: Datenbanken: Konzepte und Sprachen, Andreas Heuer und Gunter Saake, mitp-verlag, 2. Auflage, 2000, http://wwwiti.cs.uni-magdeburg.de/biber/ Datenbanken

Mehr

Vorwort 11. Eine neue Datenbank erstellen 79;

Vorwort 11. Eine neue Datenbank erstellen 79; Vorwort 11 Der SQL Server 2012 stellt sich vor 15] 1.1 SQL Server - wer ist das? 15 1.1.1 Der SQL Server im Konzert der Datenbanksysteme 16 1.1.2 Entscheidungsszenarien für Datenbanksysteme 17 1.1.3 Komponenten

Mehr

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

Datenbanksysteme 2013. Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2013 Kapitel 7: SQL Oliver Vornberger Institut für Informatik Universität Osnabrück Sprung Transititve Hülle SQL 1970 Edgar Codd: A relational model for large shared data banks 1975 SEQUEL

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

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

Datenbanksysteme 2009. Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2009 Kapitel 7: SQL Oliver Vornberger Institut für Informatik Universität Osnabrück SQL 1970 Edgar Codd: A relational model for large shared data banks 1975 SEQUEL für System R von IBM

Mehr

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

Datenbanksysteme. Dominic Pacher. Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck. dbis-informatik.uibk.ac. Datenbanksysteme Dominic Pacher Datenbanken und Informationssysteme (DBIS) Institut für Informatik Universität Innsbruck dbis-informatik.uibk.ac.at 1 Übersicht Was passiert in den kommenden 90 Minuten?

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

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

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15 Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................

Mehr

2. Datenbank-Programmierung

2. Datenbank-Programmierung 2. Datenbank-Programmierung SQL ist eingeschränkt bezüglich der algorithmischen Mächtigkeit, z.b. Berechnung einer transitiven Hülle ist in Standard-SQL nicht möglich. Die Einschränkung ist von Bedeutung

Mehr

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Introduction to Data and Knowledge Engineering. 6. Übung SQL Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB

Mehr

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

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

Strukturierte Objekttypen

Strukturierte Objekttypen Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem

Mehr

11 Funktionen. 11.1 Vorteile von Funktionen. Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen

11 Funktionen. 11.1 Vorteile von Funktionen. Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 11 Funktionen Bestimmt enthält Ihre Access-Applikation einige VBA-Funktionen. Funktionen, in denen Sie wie derkehrende Funktionalität,

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

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

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware. *HVFKDFKWHOWH$QIUDJHQ In einer SQL-Anweisung können in der where-klausel, from-klausel, select-klausel wieder SQL-Anweisungen auftreten. Man spricht dann auch von einer geschachtelten Anfrage oder Unteranfrage.

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

VO Datenmodellierung. Katrin Seyr

VO Datenmodellierung. Katrin Seyr Datenintegrität Datenintegrität VO Datenmodellierung Katrin Seyr Institut für Informationssysteme Technische Universität Wien Katrin Seyr Seite 1 Datenintegrität 1. Überblick Überblick 1 Überblick 2 Integritätsbedingungen

Mehr

desk.modul : WaWi- Export

desk.modul : WaWi- Export desk.modul : WaWi- Export Die Schnittstelle besteht aus einem Programm, welches die Daten aus der OfficeLine ausliest und in eine XML-Datei exportiert. Die Schnittstelle ist als ein eigenständiges Programm

Mehr

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

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene

Mehr

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

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien Kapitel 5 Dr. Jérôme Kunegis SQL: Grundlagen WeST Institut für Web Science & Technologien Lernziele Kenntnis der Grundkonzepte von SQL Fähigkeit zur praktischen Anwendung von einfachen SQL-Anweisungen

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Übungsblatt 8- Lösungsvorschlag

Übungsblatt 8- Lösungsvorschlag Universität Innsbruck - Institut für Informatik Prof. Günther Specht, R.Binna, N.Krismer, M. Tschuggnall 30. November 2012 Proseminar Datenbanksysteme Übungsblatt 8- Lösungsvorschlag Aufgabe 1 (Trigger)

Mehr

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

Datenbanksysteme 2015

Datenbanksysteme 2015 Datenbanksysteme 2015 Kapitel 09: Datenbankapplikationen Oliver Vornberger Institut für Informatik Universität Osnabrück Datenbankapplikationen ODBC MS Visio MS Access Embedded SQL JDBC Application SQLJ

Mehr

Einführung in PL/SQL

Einführung in PL/SQL Einführung in PLSQL Prozedurale Erweiterung der Sprache SQL um Elemente wie Variablen, Schleifen, Bedingungen, Ausnahmebehandlung Code läuft innerhalb der Datenbank ab und ist deshalb sehr performant Zusätzlich

Mehr

2 Anlegen und Konfigurieren von Datenbanken 35

2 Anlegen und Konfigurieren von Datenbanken 35 Inhalt 1 Einführung und Installation 9 1.1 Einführung 11 1.1.1 Aufbau 11 1.1.2 Schreibkonventionen 12 1.1.3 Zur Beispieldatenbank 13 1.1.4 Kurz-Installation 19 1.2 Die Oracle-Installation 20 1.3 Die Installation

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

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

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden. Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de) MySQL

Mehr

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

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

Mehr

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

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter SQLJ Standardisierte Java-DB DB-Schnittstelle Spezifikationen Part 0: Embedded SQL für Java (ANSI-Standard; Object Language Binding) Statische Einbettung von SQL-Anweisungen in Java-Quelltext Part 1: Java

Mehr

Inhaltsverzeichnis. 1 Der SQL Server 2008 stellt sich vor 15. 2 Die grafischen Tools des SQL Server 2008 59. 3 Eine neue Datenbank erstellen 87

Inhaltsverzeichnis. 1 Der SQL Server 2008 stellt sich vor 15. 2 Die grafischen Tools des SQL Server 2008 59. 3 Eine neue Datenbank erstellen 87 Vorwort 11 1 Der SQL Server 2008 stellt sich vor 15 1.1 SQL Server wer ist das? 16 1.1.1 Der SQL Server im Konzert der Datenbanksysteme 16 1.1.2 Entscheidungsszenarien für Datenbanksysteme 17 1.1.3 Komponenten

Mehr

Inhaltsverzeichnis. jetzt lerne ich

Inhaltsverzeichnis. jetzt lerne ich Inhaltsverzeichnis jetzt lerne ich Einführung 15 1 Erste Schritte 21 1.1 Datenbanken und Datenbank-Managementsysteme 21 1.2 Zugriff auf Datenbanken 22 1.3 Was der Großvater noch wusste... 22 1.4 Einordnung

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

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

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3) Vorlesung #5 SQL (Teil 3) Fahrplan Besprechung der Übungsaufgaben Rekursion Rekursion in SQL-92 Rekursion in DBMS- Dialekten (Oracle und DB2) Views (Sichten) - gespeicherte Abfragen Gewährleistung der

Mehr

NoSQL mit Postgres 15. Juni 2015

NoSQL mit Postgres 15. Juni 2015 Tag der Datenbanken 15. Juni 2015 Dipl.-Wirt.-Inform. Agenda l Vorstellung l Marktübersicht l Warum PostgreSQL? l Warum NoSQL? l Beispielanwendung Seite: 2 Vorstellung Dipl.-Wirt.-Inform. [1990] Erste

Mehr