Database. Creates. -- Kunde(knr, nname, vname, adresse:adresse.aid) CREATE TABLE Kunde ( NUMERIC(13) PRIMARY KEY,

Größe: px
Ab Seite anzeigen:

Download "Database. Creates. -- Kunde(knr, nname, vname, adresse:adresse.aid) CREATE TABLE Kunde ( NUMERIC(13) PRIMARY KEY,"

Transkript

1 Database Creates -- Adresse (aid, plz, ort, strasse, nummer) CREATE TABLE Adresse ( aid SERIAL PRIMARY KEY, plz SMALLINT NOT NULL, ort VARCHAR(40) NOT NULL, strasse VARCHAR(70) NOT NULL, nummer VARCHAR(20) NOT NULL, UNIQUE (plz,ort,strasse,nummer) -- Standort(sid, bezeichnung, adresse:adresse.aid, leiter:angestellter.svnr) CREATE TABLE Standort ( sid SERIAL PRIMARY KEY, bezeichnung TEXT NOT NULL, adresse INTEGER REFERENCES Adresse(aid), leiter NUMERIC(12) --REFERENCES Angestellter(svnr) -- Angestellter(svnr, nname, vname, gebdat, gehalt, adresse:adresse.aid, arbeitet:standort.sid) CREATE TABLE Angestellter ( svnr NUMERIC(12) PRIMARY KEY, nname VARCHAR(20) NOT NULL, vname VARCHAR(20) NOT NULL, gebdat DATE NOT NULL, gehalt NUMERIC(7,2) NOT NULL, adresse INTEGER REFERENCES Adresse(aid), arbeitet INTEGER REFERENCES Standort(sid) DEFERRABLE INITIALLY DEFERRED ALTER TABLE Standort ADD CONSTRAINT standort_leiter FOREIGN KEY (leiter) REFERENCES Angestellter(svnr) DEFERRABLE INITIALLY DEFERRED; -- Manager(svnr:Angestellter.svnr, bonus) CREATE TABLE Manager ( svnr NUMERIC(12) PRIMARY KEY REFERENCES Angestellter, bonus NUMERIC(7,2) NOT NULL -- Kunde(knr, nname, vname, adresse:adresse.aid) CREATE TABLE Kunde ( knr NUMERIC(7) PRIMARY KEY, nname VARCHAR(20) NOT NULL, vname VARCHAR(20) NOT NULL, adresse INTEGER REFERENCES Adresse(aid) -- Artikel(ean, bezeichnung, typ CREATE TABLE Artikel ( ean NUMERIC(13) PRIMARY KEY, bezeichnung TEXT NOT NULL, typ TEXT NOT NULL

2 -- serie(vorgaenger:artikel.ean, nachfolger:artikel.ean) CREATE TABLE serie ( vorgaenger NUMERIC(13) REFERENCES Artikel(ean), nachfolger NUMERIC(13) REFERENCES Artikel(ean), PRIMARY KEY (vorgaenger, nachfolger) -- Land(code, name, kontinent) CREATE TABLE Land ( code CHAR(3) PRIMARY KEY, -- ISO name VARCHAR(50) NOT NULL, kontinent VARCHAR(15) NOT NULL, CHECK (kontinent IN ('Afrika', 'Asien', 'Australien', 'Europa', 'Nordamerika', 'Südamerika')) -- Preis(datum, artikel:artikel.ean, land:land.code, wert, steuer) CREATE TABLE Preis ( datum DATE, artikel NUMERIC(13) REFERENCES Artikel(ean), land CHAR(3) REFERENCES Land(code), wert NUMERIC(7,2) NOT NULL, steuer NUMERIC(3) NOT NULL, -- prozent CHECK (steuer BETWEEN 0 AND 100), PRIMARY KEY (datum, artikel, land) -- Bestellung(bid, zeitpunkt, bezahlt, datum, knr:kunde.knr) CREATE TABLE Bestellung ( bid NUMERIC(10) PRIMARY KEY, zeitpunkt TIMESTAMP NOT NULL, bezahlt VARCHAR(4) NOT NULL, datum DATE NOT NULL, knr NUMERIC(7) REFERENCES Kunde, CHECK (bezahlt IN ('JA', 'NEIN')) -- umfasst(bid:bestellung.bid, artikel:preis.artikel, land:preis.land, datum:preis.datum, anzahl) CREATE TABLE umfasst ( bid NUMERIC(10) REFERENCES Bestellung, datum DATE, artikel NUMERIC(13), land CHAR(3), anzahl SMALLINT NOT NULL, PRIMARY KEY (bid, datum, artikel, land), FOREIGN KEY (datum, artikel, land) REFERENCES Preis

3 -- sequences CREATE SEQUENCE kunde_knr_seq START INCREMENT 10 MINVALUE NO MAXVALUE; CREATE SEQUENCE bestellung_bid_seq START INCREMENT 10 MINVALUE NO MAXVALUE; -- extensions for task 3 ALTER TABLE Kunde ADD COLUMN tpunkte integer NOT NULL DEFAULT 0; CREATE TABLE lagerstand ( standort INT REFERENCES Standort(sid), artikel NUMERIC(13) REFERENCES Artikel(ean), anzahl INT NOT NULL, PRIMARY KEY (standort, artikel) Deletes DROP TABLE IF EXISTS Adresse CASCADE; DROP TABLE IF EXISTS Standort CASCADE; DROP TABLE IF EXISTS Angestellter CASCADE; DROP TABLE IF EXISTS Manager CASCADE; DROP TABLE IF EXISTS Kunde CASCADE; DROP TABLE IF EXISTS Artikel CASCADE; DROP TABLE IF EXISTS serie CASCADE; DROP TABLE IF EXISTS Land CASCADE; DROP TABLE IF EXISTS Preis CASCADE; DROP TABLE IF EXISTS Bestellung CASCADE; DROP TABLE IF EXISTS umfasst CASCADE; DROP TABLE IF EXISTS lagerstand CASCADE; DROP SEQUENCE IF EXISTS kunde_knr_seq; DROP SEQUENCE IF EXISTS bestellung_bid_seq; DROP FUNCTION IF EXISTS t_before_bestellen( DROP FUNCTION IF EXISTS f_bestellwert(numeric DROP FUNCTION IF EXISTS f_treuepunkte(numeric DROP FUNCTION IF EXISTS f_treuepunkte_eintragen(numeric DROP FUNCTION IF EXISTS f_alte_bestellungen_entfernen(

4 SQL Teil 1.1. (Standorte): Geben Sie alle Standorte ("sid" und "bezeichnung") zusammen mit ihren Angestellten ("svnr, "vname" und "nname") aus. Vermerken Sie in einer zusätzlichen Spalte, ob es sich bei dem Angestellten um den Leiter des Standortes handelt. Benennen Sie diese neue Spalte mit "position". Sortieren Sie die Ausgabe nach dem Standort und, falls dieser gleich ist, nach dem Namen des Angestellten. SELECT sid, bezeichnung, svnr, vname, nname (CASE WHEN leiter=svnr THEN 'Leiter' END) AS position FROM Standort, Angestellter WHERE sid=arbeitet; 1.2. (bester Kunde): Geben Sie den Kunden aus, deren Bestellungen in Summe am teuersten gekommen sind. Beachten Sie dabei, dass Sie nur Bestellungen berückstichtigen, die bereits bezahlt wurde. Die Abfrage soll neben der Kundennummer ("knr") auch den Namen des Kunden ("vname", "nname") sowie die Gesamtsumme aller bisher bestellten und bezahlten Artikel ("gesamtbestellsumme") zurückliefern. SELECT knr, vname, nname, round(total, 2) gesamtbestellwert FROM ( SELECT knr, sum(wert*(1+steuer/100)*anzahl) total FROM umfasst NATURAL JOIN Preis JOIN Bestellung USING (bid) WHERE bezahlt='ja' GROUP BY knr ) tempa JOIN Kunde USING (knr) WHERE total >= ( SELECT max(total) FROM ( SELECT sum(wert*(1+steuer/100)*anzahl) total FROM umfasst NATURAL JOIN Preis JOIN Bestellung USING (bid) WHERE bezahlt='ja' GROUP BY knr ) tempb ) ; 1.3. (Standort Ranking) Geben Sie für jeden Standort ("sid" und "bezeichnung") die Anzahl der Mitarbeiter ("mitarbeiter"), die dort arbeiten aus, und ordnen Sie die Liste absteigend nach der Anzahl der Mitarbeiter. Sollten zwei Standorte gleich viele Mitarbeiter beschäftigen, so soriteren Sie die Stanodrte alphabetisch nach ihrere Bezeichnung. SELECT sid, bezeichnung, mitarbeiter FROM ( SELECT arbeitet, count(*) AS mitarbeiter FROM Angestellter GROUP BY arbeitet ) AS anz JOIN Standort ON (sid=arbeitet) ORDER BY mitarbeiter DESC, bezeichnung ASC;

5 2. (Rekursion) Wählen Sie per Hand einen Artikel aus dem Sortiment aus, der Teil einer Serie ist. Schreiben Sie eine Query, die diesen Artikel ("ean") ausgibt sowie rekursiv alle Nachfolger in dieser Serie. WITH RECURSIVE serrec(vorgaenger, nachfolger) AS ( SELECT vorgaenger, nachfolger FROM serie WHERE vorgaenger=' ' UNION ALL SELECT s.vorgaenger, s.nachfolger FROM serrec sr, serie s WHERE s.vorgaenger = sr.nachfolger ) SELECT * FROM serrec; 3.1. Wählen Sie per Hand einen Kunden aus und geben Sie alle Artikel ("ean", "bezeichnung") aus, die dieser Kunde bisher noch nicht bestellt hat. SELECT ean, bezeichnung FROM Artikel WHERE ean NOT IN ( SELECT DISTINCT artikel FROM bestellung JOIN umfasst USING (bid) WHERE knr= Schreiben Sie eine Query, die alle Kunden ("knr", "vname", "nname") zurückgibt, die alle erfassten Artikel mindestens einmal bestellt haben. SELECT knr, vname, nname FROM ( SELECT DISTINCT artikel, knr FROM bestellung JOIN umfasst USING(bid) ORDER BY knr ) tmp JOIN Kunde USING (knr) GROUP BY knr, vname, nname HAVING count(artikel) = (SELECT count(*) FROM Artikel 4. Schreiben Sie Befehle zum Erzeugen und Löschen einer View ("tagespreise_view"), welche zu einem Artikel alle Tagespreise und in welchen Ländern diese gelten, selektiert. Die View soll folgende Informationen enthalten: ean, bezeichnung, typ, datum, preis, steuer, code, name, kontinent. CREATE VIEW tagespreise_view AS SELECT Artikel.*, datum, wert, steuer, code, name, kontinent FROM Preis JOIN Artikel ON ean=artikel JOIN Land on code=land; DROP VIEW tagespreise_view;

6 PL/pgSQL Teil 5. Trigger Schreiben Sie einen BEFORE INSERT ON Trigger ("t_before_bestellen"), welcher vor einem Insert in die Tabelle "bestellen" überprüft, ob überhaupt genug Stück eines Artikels lagernd sind. Ein Datenbankeintrag soll nur erfolgen, falls in Summe an allen Standorten mindestens so viele Stück des Artikels lagernd sind wie der Kunde bestellt. Sollte der gewünschte Artikel an gar keinem Standort verfügbar sein, so soll eine Exception "artikel_ausverkauft" geworfen werden. Gibt es zu wenig Stück des Artikels, so soll die Exception "zu_wenig_stueck" geworfen werden. Verzichten Sie auf eine Fehlerbehandlung innerhalb des Triggers (da ansonsten ein fehlerhaftes INSERT-Kommand als erfolgreich angesehen würde). CREATE OR REPLACE FUNCTION t_before_bestellen() RETURNS TRIGGER AS $$ DECLARE stand INT; BEGIN SELECT sum(anzahl) INTO stand FROM Lagerstand WHERE artikel=new.artikel; IF stand = 0 THEN RAISE EXCEPTION 'artikel_ausverkauft'; ELSEIF stand IS NULL THEN RAISE EXCEPTION 'artikel_ausverkauft'; ELSEIF stand < NEW.anzahl THEN RAISE EXCEPTION 'zu_wenig_stueck'; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER t_before_bestellen BEFORE INSERT ON umfasst FOR EACH ROW EXECUTE PROCEDURE t_before_bestellen( 6. Funktionen 6.1 f_bestellwert Schreiben Sie eine Funktion ("f_bestellwert"), die für eine Bestellung den Gesamtpreis aller in dieser Bestellung zusammengefassten Waren berechnet. Die Funktion erhält als Eingabeparameter "bestellnr" ("bid" der Bestellung). Beachten Sie, dass von jedem Artikel mehrere Stück pro Bestellung bestellt werden können ("anzahl" von bestellen). CREATE OR REPLACE FUNCTION f_bestellwert(bestellnr NUMERIC(10)) RETURNS NUMERIC(7,2) AS $$ DECLARE total NUMERIC(7,2 BEGIN total = (SELECT sum(wert*(1+steuer/100)*anzahl) FROM umfasst NATURAL JOIN Preis WHERE bid = bestellnr RETURN total; EXCEPTION WHEN OTHERS THEN RAISE NOTICE '%, %', SQLERRM, SQLSTATE; RETURN -1; END; $$ LANGUAGE plpgsql;

7 6.2 f_treuepunkte Schreiben Sie eine Funktion ("f_treuepunkte"), die für eine übergebene Bestellung die, dem Kunden zustehenden Treuepunkte berechnet. Der Kunde erhält Pro 10,- Bestellwert einen Treuepunkt, d.h. für Bestellungen mit einem Wert ab 10,- einen Punkt, ab 20,- zwei Punkte usw. Hat ein Kunde bereits mehr als 10 bezahlte Bestellungen mit einem Wert jeweils über 50,- Euro getätigt, so erhält der Kunde dafür 5 Extrapunkte. Verwenden Sie dabei die im vorigen Punkt erstelle Funktion "f_bestellwert". Werfen Sie eine Expcetion "bestellwert_zu_gering", sollte der Gesamtwert der betrachteten Bestellung kleiner als 10,- sein. CREATE OR REPLACE FUNCTION f_treuepunkte(bestellnr NUMERIC(10)) RETURNS INTEGER AS $$ DECLARE trpnkt INTEGER; bstwrt NUMERIC(7,2 bstcnt INTEGER; bst Bestellung%ROWTYPE; kdnr Kunde.knr%TYPE; BEGIN bstwrt = f_bestellwert(bestellnr IF bstwrt < 10 THEN RAISE EXCEPTION 'bestellwert_zu_gering'; trpnkt = round(bstwrt/10 -- kundennummer holen von dem kunden der bestellung SELECT knr INTO kdnr FROM Bestellung WHERE bid=bestellnr; bstcnt = 0; -- bezahlte bestellungen des kunden durchlaufen FOR bst IN (SELECT bid FROM Bestellung WHERE knr=kdnr AND Bezahlt='JA') LOOP IF bstcnt > 10 THEN EXIT; IF f_bestellwert(bst.bid) > 50 THEN bstcnt = bstcnt + 1; END LOOP; IF bstcnt > 10 THEN trpnkt = trpnkt + 5; RETURN trpnkt; EXCEPTION WHEN OTHERS THEN RAISE NOTICE '%, %', SQLERRM, SQLSTATE; RETURN -1; END; $$ LANGUAGE plpgsql; 3. f_treuepunkte_eintragen Schreiben Sie eine Prozedur ("f_treuepunkte_eintragen"), die die für eine Bestellung anfallenden Treuepunkte einem Kunden gutschreibt. Die Prozedur hat als Eingabeparameter bestellnr ("bid" von Bestellungen) und gibt nichts zurück (Rückgabetyp void). Verwenden Sie zur Berechnung der gutzuschreibenden Treuepunkte die im vorigen Punkt erstellte Funktion "f_treuepunkte". CREATE OR REPLACE FUNCTION f_treuepunkte_eintragen(bestellnr NUMERIC(10)) RETURNS VOID AS $$ DECLARE trpnkt Kunde.tpunkte%TYPE; kdnr Kunde.knr%TYPE;

8 BEGIN trpnkt = f_treuepunkte(bestellnr IF trpnkt = -1 THEN RAISE EXCEPTION 'treuepunkte konnten nicht ermittelt werden'; ELSEIF trpnkt IS NULL THEN RAISE EXCEPTION 'bestellung % konnte nicht gefunden werden', bestellnr; ELSE SELECT knr INTO kdnr FROM Bestellung WHERE bid=bestellnr; IF kdnr IS NULL THEN RAISE EXCEPTION 'kunde % konnte nicht gefunden werden', kdnr; ELSE -- input okay, jetzt können wir das updaten! UPDATE Kunde SET tpunkte = tpunkte + trpnkt WHERE knr=kdnr; EXCEPTION WHEN OTHERS THEN RAISE EXCEPTION '%, %', SQLERRM, SQLSTATE; END; $$ LANGUAGE plpgsql; 6.4 f_alte_bestellungen_entfernen Schreiben Sie eine Prozedur ("f_alte_bestellungen_entfernen), die alle Bestellungen aus der Datenbank entfernt, für die nach mehr als 14 Tagen immer noch keine Bezahlt eingegangen ist. Bedenken Sie, dass sie auch in der Tabelle "bestellen" alle Datensätze löschen müssen, die zu den betroffenen Bestellungen gehören. Die Prozedur soll am Ende einen Hinweis ausgeben, wie viele Bestellungen dabei entfernt wurden. CREATE OR REPLACE FUNCTION f_alte_bestellungen_entfernen() RETURNS VOID AS $$ DECLARE todel Bestellung.bid%TYPE; deled INTEGER = 0; BEGIN FOR todel IN SELECT bid FROM Bestellung WHERE bezahlt = 'NEIN' AND (age(zeitpunkt)) > '14 days' LOOP DELETE FROM umfasst WHERE bid=todel; DELETE FROM Bestellung WHERE bid=todel; deled = deled + 1; END LOOP; -- und alles nur fuer grammatikalisch richtigen output! IF deled = 0 THEN RAISE NOTICE 'Keine Bestellungen geloescht'; ELSEIF deled = 1 THEN RAISE NOTICE 'Eine Bestellung geloescht'; ELSE RAISE NOTICE '% Bestellungen geloescht', deled; EXCEPTION WHEN OTHERS THEN RAISE EXCEPTION '%, %', SQLERRM, SQLSTATE; END; $$ LANGUAGE plpgsql;

9 Java Teil 7.1 dbconnect() Stellt eine JDBC-Verbindung zur Datenbank her und stellt AUTOCOMMIT aus. public void dbconnect() { String driver = "jdbc:postgresql"; String host = "bordo.dbai.tuwien.ac.at"; String port = "5432"; String database = "database"; String username = "username"; String password = "password"; String dbconnectionstring = driver + "://" + host + ":" + port + "/" + database; Class.forName("org.postgresql.Driver" conn = DriverManager.getConnection(dbConnectionString, username, password conn.setautocommit(false catch (Exception e) { System.out.println(e.toString() 7.2 dboutputkunden() Gibt alle Kunden (Kundennummer, Vor- und Nachname, Treuepunkte), die Anzahl aller bisher abgewickelten Bestellungen, den Gesamtwert aller Bestellungen sowie den durchschnittlichen Wert der Bestellungen aus. Berücksichtigen Sie dabei ausschließlich Bestellungen, für die bereits die Bezahltung erfolgt ist. Vergessen Sie nicht auf jene Kunden, für die noch keine derartige Bestellung erfasst ist! Verwenden Sie dabei die Funktion "f_bestellwert", die Sie in Punkt 6a erstellt haben. Die Ausgabe soll als Comma-Separated List erfolgen. public void dboutputkunden() { Statement stmt = null; ResultSet rs = null; stmt = conn.createstatement( rs = stmt.executequery("select k.knr, " + "k.vname, " + "k.nname, " + "k.tpunkte, " + "COUNT(b.bid) AS anz, " + "SUM(f_bestellwert(b.bid)) AS gesamtwert, " + "round(avg(f_bestellwert(b.bid)), 2) AS durchschn " + "FROM Kunden k " + "LEFT OUTER JOIN (Bestellungen b JOIN Bezahlung bez ON (b.bid = bez.bestellung)) ON (k.knr = b.kunde) " + "GROUP BY k.knr, k.vname, k.nname, k.tpunkte " + "ORDER BY gesamtwert DESC, k.knr" while (rs.next()) { System.out.print(rs.getString("knr") + ", " System.out.print(rs.getString("vname") + ", " System.out.print(rs.getString("nname") + ", " System.out.print(rs.getString("tpunkte") + ", " System.out.print(rs.getString("anz") + ", " System.out.print(rs.getString("gesamtwert") + ", " System.out.println(rs.getString("durchschn") rs.close( stmt.close( catch (Exception e) { System.out.println(e.toString()

10 if (rs!= null) rs.close( if (stmt!= null) stmt.close( catch (SQLException ex) { ex.printstacktrace( 7.3 edittreuepunkte() Soll die Funktionalität der PL/pgSQL-Prozedur aus 6.3 bereitstellen. public void edittreuepunkte(int bestellnr) { Statement stmt = null; CallableStatement cstmttreuepunkte = null; stmt = conn.createstatement( /* Kunden zur Bestellung herausfinden. */ ResultSet rs = stmt.executequery( "SELECT kunde "+ "FROM Bestellungen " + "WHERE bid = '" + bestellnr + "'" rs.next( int kunde = rs.getint("kunde" /* Zugehörige Treuepunkte berechnen. */ cstmttreuepunkte = conn.preparecall("{? = call f_treuepunkte(?) " cstmttreuepunkte.registeroutparameter(1, Types.INTEGER cstmttreuepunkte.setint(2, bestellnr cstmttreuepunkte.executequery( int treuepunkte = cstmttreuepunkte.getint(1 rs = stmt.executequery("select f_treuepunkte('" + bestellnr + "') AS tp" rs.next( int treuepunkte = rs.getint("tp" /* Treuepunkte eintragen */ stmt.executeupdate( "UPDATE Kunden "+ "SET tpunkte = tpunkte + " + treuepunkte + " " + "WHERE knr = '" + kunde + "'" conn.commit( /* Statements und ResultSets schließen */ cstmttreuepunkte.close( rs.close( stmt.close( catch (SQLException e) { e.printstacktrace( if (conn!= null) conn.rollback( if (stmt!= null) stmt.close( if (cstmttreuepunkte!= null) cstmttreuepunkte.close( catch (SQLException ex) { ex.printstacktrace( 7.4 resettreuepunkte() Setzt alle Treuepunkte der Tabelle "Kunden" auf 0.

11 public void resettreuepunkte() { Statement stmt = null; int updatedrows = 0; stmt = conn.createstatement( updatedrows = stmt.executeupdate( "UPDATE Kunden " + "SET tpunkte = 0 " + "WHERE tpunkte!= 0" conn.commit( stmt.close( catch (Exception e) { System.out.println(e.toString() if (conn!= null) conn.rollback( if (stmt!= null) stmt.close( catch (SQLException ex) { ex.printstacktrace( finally { System.out.println("Anzahl aktualisierter Tupel: " + updatedrows 7.5 dbdisconnect() public void dbdisconnect() { conn.close( catch (SQLException e) { //System.out.println(e.toString() while (e!= null) { System.out.print("Code: " + e.geterrorcode() System.out.print("Message: " + e.getmessage() System.out.print("State: " + e.getsqlstate() e = e.getnextexception(

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

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

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

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

Lösungen der Übungsaufgaben von Kapitel 10

Lösungen der Übungsaufgaben von Kapitel 10 Lösungen der Übungsaufgaben von Kapitel 10 1. Legen Sie mit einem SQL - Befehl eine neue Tabelle PERSON_KURZ mit den Feldern Kurz_Id, Kurz_Name an. Machen Sie das so, dass Kurz_Id der Primärschlüssel wird

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

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9); Institut für Angewandte Informatik AIFB und Formale Beschreibungsverfahren Universität Karlsruhe (TH) Prof. Dr. W. Stucky U. Schmidle Tel.: 0721 / 608-3812, 3509 Fax.: 0721 / 693717 e-mail: stucky schmidle

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

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

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

SQL-Vertiefung. VU Datenbanksysteme. Reinhard Pichler

SQL-Vertiefung. VU Datenbanksysteme. Reinhard Pichler SQL-Vertiefung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester 2015/16 Gliederung

Mehr

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java)

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) 3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

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

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

Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS DATENBANKSYSTEME VU 184.686 7. 5. 2014 Kennnr. Matrikelnr.

Mehr

Objektrelationale, erweiterbare Datenbanken WS 04/05

Objektrelationale, erweiterbare Datenbanken WS 04/05 Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe

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

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

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

Modifikation der Datenbank

Modifikation der Datenbank Modifikation der Datenbank Löschen Einfügen Änderungen Änderungen von Sichten 71 Löschen Wir haben bereits gesehen, dass wir den gesamten Inhalt einer Tabelle r löschen können durch das Kommando: delete

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

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

7.5.3. CREATE TABLE-Syntax

7.5.3. CREATE TABLE-Syntax 7.5.3. CREATE TABLE-Syntax 7.5.3.1. Stille Spaltentyp-Änderungen CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tabelle [(create_definition,...)] [tabellen_optionen] [select_statement] create_definition: spalten_name

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

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

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

Ü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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

6. Datenintegrität. Integritätsbedingungen

6. Datenintegrität. Integritätsbedingungen 6. Integritätsbedingungen dienen zur Einschränkung der Datenbankzustände auf diejenigen, die es in der realen Welt tatsächlich gibt. sind aus dem erstellten Datenmodell ableitbar (semantisch) und können

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

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221) Erstellen einer Mitarbeiter-Datenbank 1 Erstellen einer Mitarbeiter-Datenbank Arbeitsauftrag Ziel der Übung Erstellen von Datenbanken mit Hilfe von SQL-Abfragen Aufgabe (1.) Erstellen Sie eine neue Datenbank

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

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

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

Konstante Relationen

Konstante Relationen Konstante Relationen values-syntax erzeugt konstante Relation values ( [, Konstante] * )[, ( [, Konstante] * )]* Beispiel values (1, eins ), (2, zwei ), (3, drei ); Resultat ist eine

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

4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel

4.14.3 Bedingungen über Werte. 4.14.4 Statische Integrität. CHECK-Klausel 4.14.3 Bedingungen über Werte 4.14.4 Statische Integrität Zu jeder Tabelle werden typischerweise ein Primärschlüssel und möglicherweise weitere Schlüssel festgelegt (UNIQUE-Klausel). In jeder Instanz zu

Mehr

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

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten. Lehrstuhl für Datenbanken und Informationssysteme Wintersemester 1999/2000 Universität Augsburg, Institut für Informatik 25. Februar 2000 Prof. Dr. Werner Kießling A. Leubner, M. Wagner Datenbanksysteme

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

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

4. Datenbanksprache SQL

4. Datenbanksprache SQL 4. Datenbanksprache SQL Standard-Sprache für das Arbeiten mit relationalen Datenbanken: Structured Query Language Datendefinition: Anlegen, Ändern und Löschen von Datenbankstrukturen Datenmanipulation:

Mehr

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

Funktion definieren Gibt Summe der Gehälter zurück. Aufruf in einem SQL-Statement Funktion definieren Gibt Summe der Gehälter zurück Aufruf in einem SQL-Statement Dr. Christian Senger Einführung PL/SQL 1 Procedures & Transaktionen CREATE OR REPLACE PROCEDURE write_log ( log_code IN

Mehr

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

Mehr

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme Handout zur Unit Web-Technologien SQL 1 Prof. Dr. rer. nat. Nane Kratzke Praktische Informatik und betriebliche Informationssysteme Raum: 17-0.10 Tel.: 0451 300 5549 Email: nane.kratzke@fh-luebeck.de (Praktische

Mehr

Seite1 / Aufgabe 2: SQL. Lösungsvorschlag für die zusätzlichen Übungsaufgaben. Seite 2 / Aufgabe 1. Seite1 / Aufgabe 2: SQL. Warengruppe.

Seite1 / Aufgabe 2: SQL. Lösungsvorschlag für die zusätzlichen Übungsaufgaben. Seite 2 / Aufgabe 1. Seite1 / Aufgabe 2: SQL. Warengruppe. Seite / Aufgabe 2: SQL Lösugsvorschlag für die zusätzliche Übugsaufgabe a SELECT SUM(e.stimmezahl FROM Kadidat k, Ergebis e WHERE e.kadidatid = p.kadidatid AND p.ame = 'Republikaer' AND e.budesstaat ='

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

SQL und MySQL. Kristian Köhntopp

SQL und MySQL. Kristian Köhntopp SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)

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

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

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

Advanced SQL verstehen und einsetzen 10.06.2009. SQL-Implementierungen kennen und bewerten

Advanced SQL verstehen und einsetzen 10.06.2009. SQL-Implementierungen kennen und bewerten 1/47 PHP-User-Group Stuttgart 10.06.2009 Aktuelle Datenbank-Features verstehen und nutzen SQL-Power aktivieren anstatt Arrays sortieren Valide Daten garantieren und performante DB-Zugriffe sicherstellen

Mehr

SQL. Fortgeschrittene Konzepte Auszug

SQL. Fortgeschrittene Konzepte Auszug SQL Fortgeschrittene Konzepte Auszug Levels SQL92 Unterteilung in 3 Levels Entry Level (i.w. SQL89) wird von nahezu allen DBS Herstellern unterstützt Intermediate Level Full Level SQL DML 2-2 SQL92 behebt

Mehr

Datenbanken: Prozedurales SQL

Datenbanken: Prozedurales SQL Datenbanken: Prozedurales SQL Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! (Endanwendern ist nicht zuzumuten, SQL zu lernen und selbst

Mehr

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht Dipl. Inf. Eric Winter Entwicklungsleiter PTC GPS-Services GmbH PostgreSQLals HugeData Storage Ein Erfahrungsbericht Inhalt 1. Problembeschreibung 2. Partielle Indexierung 3. Partitionierung 1. Vererbung

Mehr

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt Some SQL Queries % you can use them with the project Buch/Verlag select Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf select DISTINCT Name, ort From Verkauf; selektiert Name und Ort

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

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

Datenintegrität. Bisherige Integritätsbedingungen

Datenintegrität. Bisherige Integritätsbedingungen Datenintegrität Integitätsbedingungen chlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Bedingungen an den Zustand der Datenbasis dynamische Bedingungen an Zustandsübergänge

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

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

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

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198 Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT INTO) 95 5 Daten abfragen (SELECT) 99 6 Daten aus mehreren Tabellen abfragen (JOIN) 143 7 Unterabfragen

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 20. November 2015 Betriebssysteme / verteilte

Mehr

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN: U 8 SQL = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN: - Abfragesprache für relationale Datenbanken, die plattformübergreifend verwendet wird - Vereinfachte Verwendung über

Mehr

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

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne Informatik für Ökonomen II: Datenintegrität Prof. Dr. Carl-Christian Kanne 1 Konsistenzbedingungen DBMS soll logische Datenintegrität gewährleisten Beispiele für Integritätsbedingungen Schlüssel Beziehungskardinalitäten

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

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

Mehr

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh)

Klausur PI Datenbanken II vom Name: Praktische Informatik (Krägeloh) Versehen Sie jedes Aufgabenblatt/-blätter mit Ihrem Namen und geben es mit ab! Seite 1 Aufgabe 1: ( 30 Punkte) 1) Ein Entity-Set E1 wird in die Subklassen S1 und S2 spezialisiert. Was bedeutet die Aussage:

Mehr

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock Übung Datenbanksysteme I JDBC Thorsten Papenbrock Motivation: Grenzen von SQL 2 1. Bedingte Anweisungen Erhöhe das Gehalt eines Arbeitsnehmers um 2%, falls er eine Belobigung erhalten hat 2. Darstellung

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

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

SQL: Weitere Funktionen

SQL: Weitere Funktionen Vergleich auf Zeichenketten SQL: Weitere Funktionen LIKE ist ein Operator mit dem in Zeichenketten andere Zeichenketten gesucht werden; zwei reservierte Zeichen mit besonderer Bedeutung sind hier % (manchmal

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

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

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

Mehr

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008 Programmieren II Datenbanken Dr. Klaus Höppner SQL Hochschule Darmstadt SS 2008 JDBC 1 / 20 2 / 20 Relationale Datenbanken Beispiele für RDBMS Ein Datenbanksystem ist ein System zur Speicherung von (großen)

Mehr

Web Technologien Klassische Datenbanken am Beispiel von MySQL

Web Technologien Klassische Datenbanken am Beispiel von MySQL Web Technologien Klassische Datenbanken am Beispiel von MySQL Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00

Mehr

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007 Einführung in JDBC IFIS Universität zu Lübeck 18.04.2007 1 Was ist JDBC Standard für relationale DB: SQL Vor JDBC: Open Database Connectivity (ODBC), uniforme Schnittstelle für Zugriff JDBC: Programmierschnittstelle

Mehr

SQL-Anweisungen. SELECT (SQL Data Query Language)

SQL-Anweisungen. SELECT (SQL Data Query Language) SQL-Anweisungen SELECT (SQL Data Query Language) SELECT * SELECT * FROM "meine Tabelle"; SELECT feldname1, feldname2 SELECT feldname1, feldname2 FROM meinetabelle ORDER BY feldname2, feldname1 DESC; WHERE

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

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

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

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

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

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

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Neugestaltung der Datenbank des Chemnitzer Studentennetzes 12.12.2012 Neugestaltung der Datenbank des Chemnitzer Studentennetzes Verteidigung Bachelorarbeit Morris Jobke Prüfer: Dr. Frank Seifert Betreuer: Dipl.-Inf. Johannes Fliege Neugestaltung der Datenbank

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

DB1 Abgabe 1 14.4.09. Umsetzung der Callcenter Datenbank nach SQL von Daniel Häfliger, Dominik Süsstrunk und Reto Brühwiler

DB1 Abgabe 1 14.4.09. Umsetzung der Callcenter Datenbank nach SQL von Daniel Häfliger, Dominik Süsstrunk und Reto Brühwiler DB1 Abgabe1 14.4.09 Abgabe2DML UmsetzungderCallcenter DatenbanknachSQLvonDanielHäfliger,DominikSüsstrunkundReto Brühwiler Tabellenerstellen(callcenter_tables.sql) DieTabellenwerdenzuerstgelöscht,sofernsieexistieren(ohneaufdieFremdschlüsselzu

Mehr

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 28. Nov. 2014 F. Wenzel, L. Rudenko Lösungsblatt 6

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 28. Nov. 2014 F. Wenzel, L. Rudenko Lösungsblatt 6 Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 28. Nov. 2014 F. Wenzel, L. Rudenko Lösungsblatt 6 Aufgabe 1: SQL: DDL und DML a) DDL: Datenbanksysteme I CREATE TABLE Bundeslaender

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

Datenbanksysteme I Integrität und Trigger Felix Naumann

Datenbanksysteme I Integrität und Trigger Felix Naumann Datenbanksysteme I Integrität und Trigger 9.5.2011 Felix Naumann Motivation Aktive Datenbanken 2 Einzufügende Daten können fehlerhaft sein Typographische Fehler, logische Fehler Lösung 1: Bessere Anwendung

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) DDL ist Teil von SQL (Structured

Mehr

StructuredQueryLanguage(SQL)

StructuredQueryLanguage(SQL) StructuredQueryLanguage(SQL) Themen: ErstelenundÄndernvonTabelen AbfragenvonDaten Einfügen,ÄndernundLöschenvonDaten Erstelennutzerde niertersichten(views) 2012Claßen,Kempa,Morcinek 1/23 SQL Historie System

Mehr

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

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Klausur zur Vorlesung Datenbanksysteme I

Klausur zur Vorlesung Datenbanksysteme I Prof. Dr. W. Kießling 30.01.2002 Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg Klausur zur Vorlesung Datenbanksysteme I Wintersemester 2001/2002 Name Vorname Matrikelnummer Aufgabe

Mehr

Kapitel 3 Datenintegrität

Kapitel 3 Datenintegrität Kapitel 3 Datenintegrität Flien zum Datenbankpraktikum Wintersemester 2012/13 LMU München 2008 Thmas Bernecker, Tbias Emrich 2010 Tbias Emrich, Erich Schubert unter Verwendung der Flien des Datenbankpraktikums

Mehr

MySQL: Einfaches Rechnen. www.informatikzentrale.de

MySQL: Einfaches Rechnen. www.informatikzentrale.de MySQL: Einfaches Rechnen Vorweg: Der Merksatz Warum geht Herbert oft laufen? Vorweg: Der Merksatz Warum geht Herbert oft laufen?...... WHERE... GROUP BY... HAVING... ORDER BY... LIMIT Beispieldatenbank

Mehr