Vorlesung Datenbanksysteme Univ.-Prof. Dr. Günther Specht. Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme (DBIS)

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Datenbanksysteme Univ.-Prof. Dr. Günther Specht. Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme (DBIS)"

Transkript

1 SQL Kapitel IV Vorlesung Datenbanksysteme Univ.-Prof. Dr. Günther Specht Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme (DBIS) Vorlesungsinhalt 4. SQL Entwicklungsgeschichte und Standardisierung von SQL Algebra-orientierte SQL-Konstrukte (I): Selektion, Projektion, Tabellenausdrücke Arithmetische und String-Ausdrücke, eingebaute Funktionen, Sortierung Algebra-orientierte SQL-Konstrukte (II): Join, Vereinigung, Differenz, Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen Gruppierungs- und Aggregat-Funktionen Rekursive Anfragen Bedeutung und Behandlung von Nullwerten Datenbank Manipulationsoperationen Datenbank Schema-Operationen Definition von Sichten (Views) Schemata Anlegen und Löschen von Indexen Trigger Autorisierung (Zugriffskontrolle) 2 G. Specht: Datenbanksysteme 4-1

2 Entwicklungsgeschichte und Standardisierung von SQL 3 Entwicklungsgeschichte von SQL SQL (früherer Name: SEQUEL [1] ): Zunächst Anfragesprache des relationalen DBMS-Prototyps System R, Impl. ab Anf. 70er Jahre im IBM Forschungslabor in San Jose SQL wurde ab Anfang der 80er Jahre in verschiedenen Datenbank- Implementierungen verfügbar: IBM, Oracle, DEC,... Anfang/Mitte der 80er Jahre Standardisierungsaktivitäten am ANSI für eine relationale Datenbank-Sprache auf Basis von SQL [1] Structured English Query Language 4 G. Specht: Datenbanksysteme 4-2

3 Entwicklungsgeschichte von SQL cont wurde SQL ISO-Standard (ISO 9075) und anschließend auch als deutsche Norm DIN-ISO 9075 übernommen Erweiterung von SQL 89 ISO 9075 (DIN-ISO 9075 folgte 1990), u.a. um Regeln für die Unterstützung referentieller Integrität (referential integrity) 1992 Verabschiedung von SQL 92 SQL2 als ISO , und 1993 als DIN (mit Entry SQL, Intermediate SQL und Full SQL.) 1999: Neuer Standard: SQL:1999 ( SQL3 ) Beginn der Verabschiedung der Teilstandards zu SQL: SQL:1999-Teilstandards SQL/Framework ISO Part No Übersicht über den kompletten Standard SQL/Foundation ISO Part No Kerndokument, beschreibt alle grundlegenden SQL-Features SQL/CLI (Call Level Interface) ISO Part No Aufruf von SQL-Befehlen durch Programmiersprachen SQL/PSM (Persistent Stored Modules) ISO Part No Erweiterung von SQL um imperative Sprachkonstrukte; gespeicherte Prozeduren und Funktionen SQL/Bindings (Host Language Bindings) ISO Part No Einbettung von SQL-Befehlen in Programmiersprachen SQL Multimedia and Application Packages Anwendungsspezifische Bibliotheken von SQL-Typen und Methoden. In Arbeit: Full-Text, Spatial 6 G. Specht: Datenbanksysteme 4-3

4 SQL:1999-Teilstandards cont. Teilstandards umgesetzt mit SQL:2003 SQL/JRT (SQL Routines and Types Using the Java Programming Language) Unterstützung von Java-Routinen und -Typen in SQL SQL/MED (Management of External Data) Unterstützung von externen (nicht im DBS gespeicherten) Daten SQL/OLB (Object Language Bindings) Beschreibung von SQLJ (in Java eingebettetes SQL) (SQL:2003) Weitere Teilstandards: SQL/Schemata Beschreibung von SQL-Schemas SQL/Temporal (in Entwicklung) Unterstützung von Zeit-basierten Datentypen SQL/XML(SQL:2003, SQL:2006, SQL:2008, SQL:2011) Unterstützung von XML in SQL u.v.m. (SQL:2008) 7 SQL-Standardisierung Grundsatz: Ein neuer Standard löst den alten Standard ab Seit Verabschiedung von SQL:1999 ist SQL:1999 der aktuelle (und allein) gültige SQL- Standard Um eine bessere Migration zu erreichen, wurden bereits im SQL92-Standard drei Level vorgesehen: Entry SQL: im Wesentlichen SQL89 Intermediate SQL: Entry Level + Domains + Join-Operatoren + Cascading Delete + Benannte Constraints +... Full SQL: Intermediate SQL + Cascading Update + Tabellenausdrücke G. Specht: Datenbanksysteme 4-4

5 SQL-Standardisierung cont. SQL:1999 ist ein sehr umfangreicher Standard, den kaum ein DBMS-Hersteller in vollem Umfang implementiert hat, deshalb die Definition von Teil-Standards. Umfang der Standard-Dokumente im Vergleich SQL89 ca. 100 Seiten SQL92 ca Seiten SQL:1999 ca Seiten SQL:2003 ca Seiten SQL:2008 ca Seiten 9 Zum Vorlesungsinhalt SQL ist eine sehr mächtige und umfangreiche Datenbank-Sprache geworden Durch verschiedene Versionen kamen Funktionen hinzu Rekursion Trigger Benutzerdefinierten Datentypen und Operationen Objektorientierung Umgang mit XML Daten Die Beispiele in der Vorlesung stützen sich auf den Standard (MySQL weicht davon manchmal etwas ab, IBM DB2 ist z.b. näher am Standard) Zur Sprechweise Da Relationen bei der graphischen Darstellung in der Regel als Tabelle dargestellt werden, verwendet man in der Literatur (und auch wir im folgenden) die Begriffe Relation und Tabelle synonym. 10 G. Specht: Datenbanksysteme 4-5

6 Überblick SQL-Syntax Relationenalgebra-orientierte SQL-Sprachkonstrukte (I) (Selektion, Projektion, Tabellenausdrücke) Arithmetische und String-Ausdrücke, eingebaute Funktionen, Sortierung Relationenalgebra-orientierte SQL-Sprachkonstrukte (II) (Join, Union, Differenz,...) Relationenkalkül-orientierte SQL-Sprachkonstrukte (Exists-, For-all-Bedingungen) Subqueries Gruppierungs- und Aggregat-Funktionen Rekursive Anfragen Nullwerte DML: Einfügen, Ändern und Löschen von Tupeln DDL: Erzeugen und Löschen von Relationen, Integritätsbedingungen, Sichten, Schemata, Indexen,... Trigger Zugriffskontrolle 11 Algebra-orientierte SQL-Konstrukte (I): Selektion, Projektion, Tabellenausdrücke 12 G. Specht: Datenbanksysteme 4-6

7 Algebra-orientierte SQL-Konstrukte (I): Selektion, Projektion, Tabellenausdrücke Unterschiede zur Relationen-Algeba 1. Selektion, Projektion und Join sind keine Einzeloperatoren, sondern sind in die SELECT-FROM-WHERE-Anweisung (SFW) einbettet 2. SQL-Relationen sind im Allgemeinen nicht duplikatfrei (Multimengen) 3. Duplikatfreiheit bei Anfrageergebnissen muss i.d.r. - wo gewünscht - explizit (per Operator) erzwungen werden Zusätzlich (gilt für alle Arten von Anfrageergebnissen) Sortierung der Tupel ist möglich, wirkt aber nur für die Ausgabe (d.h. es gibt keine sortierten Relationen als Datenbankobjekte!) 13 Basisbaustein: Select-From-Where-Block (SFW) *) Anstelle des Attributnamens kann auch die Attributnummer (=Attributposition) angegeben werden. Bedeutung SFW π Attributliste (σ Prädikat (R 1 x... x R n ) ) kartesisches Produkt! Dabei ist ALL/DISTINCT... Kennzeichnung für mit/ohne Duplikate (mit ALL als Default) Attributliste... von der Form "R i.a ij,..."oder "R i.*" oder "*" (= alle Attribute) Prädikat... Attribute (R i.a ij ), Konstanten, =,, <,..., AND, OR, NOT, u.v.m. Auswertungsreihenfolge 1. FROM -Klausel 2. WHERE -Klausel 3. SELECT -Klausel 4. ORDER -Klausel 14 G. Specht: Datenbanksysteme 4-7

8 Beispiele S1 Gib die Teilnehmer-Relation komplett aus Die WHERE-Klausel entfällt in diesem Fall, da keine einschränkende Selektionsbedingung zu spezifizieren ist ohne Duplikateliminierung: SELECT * FROM Teilnehmer mit Duplikatelimierung: SELECT DISTINCT * FROM Teilnehmer S2 Gib die Teilnehmer-Relation komplett aus, aber in der Attribut-Reihenfolge Name, TnNr, Ort SELECT FROM Name, TnNr, Ort Teilnehmer 15 Beispiele cont. S3 Gib alle Kursteilnehmer aus, die aus Innsbruck kommen mit expliziter Attributangabe SELECT TnNr, Name, Ort FROM Teilnehmer WHERE Ort = 'Innsbruck' mittels Kurzform SELECT * FROM Teilnehmer WHERE Ort = 'Innsbruck' S4 Gib alle Teilnehmer mit Teilnehmernummer 100 aus SELECT * FROM Teilnehmer WHERE TnNr <= G. Specht: Datenbanksysteme 4-8

9 Verknüpfungsoperatoren Vergleichs-Ausdrücke können mit AND und OR verknüpft werden... TnNr > 100 AND TnNR < Ort = 'Innsbruck' OR Ort = 'Kufstein'... (Ort = 'Innsbruck' OR Ort = 'Kufstein') ANDTnNr > 100 [1] Weitere Vergleichs-Operatoren... TnNr BETWEEN 100 AND 200 (äquivalent zu: TnNr >= 100 AND TnNR <= 200)... TnNr NOT BETWEEN 100 AND TnNr IN (100, 200, 130, 400)... TnNr NOT IN (100, 200, 130, 400) Anmerkungen zu IN Nach IN kommt eine Menge atomarer Werte (kann auch ein-elementig oder leer sein) Die IN-Menge kann auch durch eine Subquery erzeugt werden (siehe später) [1] Wie üblich bindet AND stärker als OR 17 Tabellenausdrücke In der SQL-1 (SQL86/SQL89) waren in der FROM-Klausel nur Relationsnamen (oder Viewnamen [1] ) erlaubt SQL92 hat diese Einschränkung aufgehoben. In der FROM-Klausel können jetzt auch Tabellenausdrücke (Relationsausdrücke) auftreten SQL92-Form: SELECT... SELECT... FROM Relationsname FROM Tabellenausdruck WHERE... WHERE... Ein Tabellenausdruck kann sein ein SFW-Ausdruck VALUES-Klausel konstante Tabelle [1] Views (Sichten) sind sog. "virtuelle" Relationen. Später wird darauf noch näher eingegangen. 18 G. Specht: Datenbanksysteme 4-9

10 Tabellenausdrücke Beispiele In SQL-1 nur möglich SELECT * FROM Teilnehmer WHERE TnNr >= 100 In SQL-2 auch möglich SELECT * FROM (SELECT * FROM Teilnehmer WHERE TnNr >= 100) ASt [1] oder auch SELECT * FROM TABLE ( SELECT * FROM Teilnehmer WHERE TnNr >= 100) ASt oder auch WITH t AS ( SELECT * FROM Teilnehmer WHERE TnNr >= 100 ) SELECT t.tnnr, t.name FROM t [1] DB2 UDB V7 verlangt hier einen Tabellennamen (d.h. die AS-Angabe ist nicht optional) 19 Tabellenausdrücke Beispiele cont. konstante Relationen Konstruktion mittels Tabellenkonstruktor VALUES SELECT * FROM (VALUES (11, 12, 13), (21, 22, 23)) AS t oder auch SELECT * FROM TABLE (VALUES (11, 12, 13), (21, 22, 23)) AS t Resultat Anmerkungen Im Kontext eines einfachen SFW-Konstruktes wie oben, macht eine VALUES-Tabelle in der Regel nicht viel Sinn. In Verbindung mit UNION- oder EXCEPT-Operationen kann sie sehr nützlich sein. Die Elemente einer VALUES-Klausel müssen keine Konstanten sein, sondern können auch Ausdrücke (expressions) sein. 20 G. Specht: Datenbanksysteme 4-10

11 Arithmetische und String-Ausdrücke, eingebaute Funktionen, Sortierung 21 LIKE-Prädikat S5 Gib die Daten des Kursteilnehmers 'Meier, K.' aus SELECT * FROM Teilnehmer WHERE Name = 'Meier, K.' genau so in Datenbank? S6 Gib die Daten des Kursteilnehmers 'Meier' aus SELECT * FROM Teilnehmer WHERE Name = 'Meier' no records found SELECT * FROM Teilnehmer WHERE Name LIKE 'Meier% TnNr Name Ort 155 Meier, W. Stuttgart 185 Meier, K. Heidelberg 22 G. Specht: Datenbanksysteme 4-11

12 LIKE-Prädikat cont. S7 Gib alle Kursteilnehmer aus, die aus einer Stadt kommen, die auf burg' endet. SELECT * FROM Teilnehmer WHERE Ort LIKE '%burg' S8 Wie S7, aber die Stadt soll außerdem mit 'H' beginnen....where Ort LIKE 'H%burg' S9 Gib alle Kursteilnehmer aus, die 'Maier', 'Meier', 'Mayer usw. heißen....where Name LIKE 'M er% 23 LIKE Prädikat cont. Anmerkungen LIKE ist ein spezieller Vergleichsoperator für CHAR-Attribute. Der Attributwert wird als Ganzes von links nach rechts zeichenweise mit dem angegebenen Muster verglichen (pattern matching). Maskierungszeichen ( wild cards ) "%" : an der durch "%" markierten Stelle können beliebig viele (auch keine!) zu ignorierende Zeichen stehen. "_" :an der durch "_" (Unterstrich) markierten Stelle wird genau ein Zeichen ignoriert 24 G. Specht: Datenbanksysteme 4-12

13 LIKE-Prädikat cont. Sollen die Zeichen "%" oder "_" in einem Text gesucht werden, so können sie durch ein frei definierbares, vorangestelltes Escape -Zeichen in gewöhnliche Zeichen verwandelt werden.... WHERE A LIKE '%\%%' ESCAPE '\' (normale) Anfangsmaskierung (normale) Endmaskierung "%" als normales Zeichen würde alle Tupel finden, die (irgendwo) im Attributwert von A ein %-Zeichen haben. LIKE kennt keine Wortgrenzen. Der gesamte CHAR-Attributwert wird als eine Zeichenkette (gewissermaßen als ein Wort) aufgefasst, einschließlich aller darin auftretenden Leerzeichen, Zahlen und Sonderzeichen. Die Möglichkeit, präzise Anfragen gegen CHAR-Attribute zu formulieren, ist dadurch sehr stark eingeschränkt. Viele DBS bieten Zusatzfunktionen ( Volltextsuche) an, die sehr viel mehr Funktionalität bieten. Eine Standardisierung der entsprechenden Syntax siehe z.b. MM-SQL 25 Datums-Prädikate S10 Gib alle Kurse aus, die nach dem 1. April 2012 stattfinden. SELECT * FROM Angebot WHERE Datum > ' (oder... Datum > ' ') ANGNR KURSNR DATUM ORT 1 P Ulm 2 P Essen 2 I Hamburg 3 I München Wenn man das Datum in der Ergebnistabelle ebenfalls in der Form 'tt.mm.jjjj' ausgegeben haben möchte: SELECT AngNr, KursNr, CHAR(Datum, EUR), Ort FROM G. Specht: Datenbanksysteme 4-13

14 Datums-Prädikate cont. S11 Gib alle Kurse aus, die im Februar 2012 angeboten werden SELECT * FROM Angebot WHERE Datum BETWEEN ' ' AND ' ' Anmerkungen Eingabe im Stringformat (mit Konventionen), dann Umwandlung in die DBSinterne DATE-Darstellung. Das Default-Format für die Ausgabe ist im Standard nicht festgelegt. Hier verfahren die DBS unterschiedlich. In Verbindung mit arithmetischen Funktionen werden wir noch weitere Möglichkeiten für Datumsprädikate kennenlernen 27 Integer- und Real-Arithmetik Operatoren: +, -, *, / mit der üblichen Semantik Von vielen DBMS wird darüber hinaus praktisch die ganze Palette an üblichen numerischen Operatoren und Funktionen angeboten mod(x), power(x,y), sin(x), cos(x), sqr(x),... S12 Gib aus, bei welcher Kursliteratur ein Unterbestand (Bestand kleiner als Bedarf) vorhanden ist und wie hoch die Beschaffungskosten hierfür sind. Spaltenüberschriften SELECT KursNr, Bedarf-Bestand, (Bedarf - Bestand) * Preis wenig aussagefähig [1] FROM KursLit WHERE Bedarf > Bestand KursNr I Abhilfe: Umbenennung der Attribute [2] P SELECT FROM WHERE KursNr, Bedarf - Bestand AS Minusbestand, (Bedarf - Bestand) * Preis AS Beschaffungskosten KursLit Bedarf > Bestand KursNr Minusbestand Beschaffungskosten I P [1] Von DBS zu DBS verschieden. Das DBS Oracle würde hier z.b. als direkt den erzeugenden Ausdruck als Default-Spaltenbeschriftung einsetzen [2] Die Angabe von "AS" ist hierbei optional 28 G. Specht: Datenbanksysteme 4-14

15 String-Funktionen SQL92 sieht eine Reihe von (gängigen) Stringfunktionen vor In vielen DBMS enthalten, allerdings nicht immer in SQL92-kompatibler Form String-Funktionen in DB2 UDB V7 (Auswahl) [1] : LCASE(string) UCASE(string) LENGTH(string) LOCATE(suchstr, string) LEFT(string, anz), RIGHT(string, anz) SUBSTR(string, start [,länge]) LTRIM(string), RTRIM(string) TRIM(string) CHAR(num.Wert) [1] Viele dieser Funktionen sind auch auf andere variabel lange Datentypen anwendbar 29 Datums-Funktionen S13 Gib die Angebotsrelation aus, sortiert nach Datum, mit separaten Spalten für Tag, Monat und Jahr SELECT FROM Angebot ORDER BY Datum AngNr, KursNr, day(datum) AS Tag, month(datum) AS Monat, year(datum) AS Jahr AngNr KursNr Tag Monat Jahr Ort 1 G München 1 G München 2 G Hamburg 2 G Bremen 1 I Stuttgart 2 I Hamburg 1 P Innsbruck 3 I München 2 P Essen Extraktionsfunktionen: year(date), month(date), day(date) 30 G. Specht: Datenbanksysteme 4-15

16 Datums-Funktionen cont. S14 Alle Kursangebote sollen um 3 Monate verschoben werden. Gib AngNr, KursNr sowie altes und neues Datum aus SELECT FROM ORDER BY AngNr, KursNr, Datum AS DatumAlt, Datum + 3months AS DatumNeu Angebot Datum Datums-Arithmetik: Berechnung von Zeitabständen days, months, years Analog: Zeit (Stunden, Minuten, Sekunden) 31 Sortierung der Ausgabe-Tupel S15 Gib die Kursteilnehmer-Relation(Ausgabe: Ort, Name, TnNr), sortiert nach Orten und Namen aus SELECT FROM ORDER BY Ort, Name, TnNr Teilnehmer Ort, Name S16 Gib alle Kurs-Angebote für die Kurse 'P13' und 'I09' sortiert nach Datum (das aktuellste zuerst), Angebots-nummer und Ort (jeweils aufsteigend) aus SELECT * FROM Angebot WHERE KursNr = 'P13' OR KursNr = 'I09' ORDER BY Datum DESC, AngNr, Ort Anmerkungen Die ORDER BY-Klausel kann in einer Anfrage nur einmal und zwar ganz am Schluss auftreten ASC (der Default) = aufsteigende Sortierung, DESC = absteigende Sortierung Die Sortierung bezieht sich immer nur auf die Ausgabe der Ergebnistabelle (auf dem Bildschirm oder als Übergabe an ein Anwendungsprogramm) Die Attribute werden über ihren Namen (oder ihre Position) angesprochen 32 G. Specht: Datenbanksysteme 4-16

17 Algebra-orientierte SQL-Konstrukte (II): Join, Vereinigung, Differenz, 33 Join (Verbund) SELECT ALL Attributliste DISTINCT FROM WHERE Rel 1, Rel 2,... Rel n Rel i.attributname = Rel j.attributname AND Rel k.attributname = Rel l.attributname AND... Rel y.attributname = Rel z.attributname mit i,j,k,l,...,y,z {1,2,...n}... wobei beliebige Vergleichsoperationen sowie Vergleiche zwischen Attributwerten und Konstanten zugelassen sind. siehe Join-Definition: Kartesisches Produkt + Selektion 34 G. Specht: Datenbanksysteme 4-17

18 Join (Verbund) cont. S17 Welche Kursangebote (Ausgabe: KursNr, AngNr) werden von welchen Kursleitern (Ausgabe: Name) durchgeführt? SELECT FROM WHERE f.kursnr, f.angnr, lt.name Fuehrt_durch f, Kursleiter lt f.persnr = lt.persnr Join der Form: Join-Bedienung in der WHERE- Klausel 35 Explizite Join-Operationen Condition Join SELECT select-list FROM table1 [ AS t1 ] JOIN table2 [ AS t2 ] ON join-condition-j1 JOIN table3 [ AS t3 ] ON join-condition-j2 Anmerkungen Der Condition-Join-Ausdruck wird von links nach rechts interpretiert d.h. join-condition-j1 kann nur Attribute referenzieren, die im Scope von table1 oder table2 auftreten, nicht jedoch solche aus table3 Join-condition-j2 kann auf alle Attribute der zuvor spezifizierten Tabellen (linke Seite) sowie die von table3 zugreifen Diese Join-Form ist insbesondere dann notwendig, wenn Outer-Joins vorkommen (siehe unten) 36 G. Specht: Datenbanksysteme 4-18

19 Explizite Join-Operationen cont. Natural Join SELECT FROM select-list table1 NATURAL JOIN table2 Column Name Join SELECT select-list FROM table1 JOIN table2 USING (c1, c2) Anmerkungen Der Column Name Join ist ein Spezialfall des Natural Join Nur die angegebenen Spaltennamen (hier: c1 und c2), die jeweils in beiden Tabellen vorkommen müssen, werden für den Join verwendet Spaltennamen, die in der USING-Klausel spezifiziert werden, dürfen in der WHERE-Klausel nicht mehr mit dem Source-Tabellen-Namen qualifiziert werden (auch nicht mittels entspr. Korrelationsvariable) 37 Beispiel SELECT a.kursnr, a.angnr, nt.tnnr FROM Angebot AS a JOIN Nimmt_teil AS nt USING (KursNr, AngNr) WHERE a.kursnr > 200 ist nicht erlaubt! SELECT KursNr, AngNr, nt.tnnr FROM Angebot AS a JOIN Nimmt_teil AS nt USING (KursNr, AngNr) WHERE KursNr > 200 richtig! 38 G. Specht: Datenbanksysteme 4-19

20 Explizite Join-Operationen cont. Cross Join (Kreuzprodukt, kartesisches Produkt) SELECT select-list FROM table1 CROSS JOIN table2 Entspricht: SELECT select-list FROM table1, table2 39 Explizite Join-Operationen cont. Outer Join SELECT select-list FROM table1 LEFT OUTER JOIN table2 ON... SELECT select-list FROM table1 RIGHT OUTER JOIN table2 ON... SELECT select-list FROM table1 FULL OUTER JOIN table2 ON... KURSNR TITEL VORAUS_ KURSNR G08 Grundlagen I - G10 Grundlagen II - I09 Datenbanken G08 I09 Datenbanken P13 I09 Datenbanken G10 P13 C-Programmierung G08 P13 C-Programmierung G10 40 G. Specht: Datenbanksysteme 4-20

21 Beispiel Gib alle Kurse mit ihren Voraussetzungen aus Formuliert mittels LEFT OUTER JOIN SELECT k.kursnr, k.titel, v.vornr AS Voraus_KursNr FROM Kurs AS k LEFT OUTER JOIN Vorauss AS v ON k.kursnr = v.kursnr Formuliert mittels RIGHT OUTER JOIN... FROM Vorauss AS v RIGHT OUTER JOIN Kurs As k 41 Anmerkungen zu den neuen Join-Konstrukten Zielrichtung: Verbesserte Lesbarkeit Mehr Fehlerprüfung durch DBMS (Vermeidung unbeabsichtigter (partieller) Kreuzprodukte) Zur besseren Unterscheidung zu den Outer Joins, kann den Inner Joins das Schlüsselwort INNER vorangestellt werden: INNER JOIN... ON... INNER JOIN... USING... Inner Joins und Outer Joins können zudem in der NATURAL-Join-Variante auftreten: Aber alte Join-Syntax auch noch voll gültig! 42 G. Specht: Datenbanksysteme 4-21

22 Anfrage-Beispiele S17 Welche Kursangebote (Ausgabe: KursNr, AngNr) werden von welchen Kursleitern (Ausgabe: Name) durchgeführt? (Jetzt in neuer Syntax) SELECT FROM f.kursnr, f.angnr, lt.name Fuehrt_durch AS f JOIN Kursleiter AS lt ON f.persnr = lt.persnr Anmerkungen Die Angabe von AS (sowohl in der SELECT- als auch in der FROM-Klausel ) ist stets optional (aber empfehlenswert). Die (frei gewählten) Bezeichner f und lt in der FROM-Klausel sind sog. Korrelationsvariablen, die man dazu verwenden kann, um Relationsbezüge eindeutig zu machen (bei Selfjoins und in Subqueries => siehe später) Anstelle der oft langen Relationsnamen kurze Bezeichner zu verwenden Im Beispiel oben gilt: Die Attributnamen in der SELECT-Klausel sind eindeutig, die Korrelationsvariablen wären hier nicht notwendig. 43 Anfrage-Beispiele cont. S18 Welche Kursangebote (Ausgabe: KursNr, Titel, AngNr, Datum, Ort) werden von welchen Kursleitern (Ausgabe: PersNr) durchgeführt? Vorgehensweise bei Join-Formulierung: 1. Attribute für die Ausgaben bestimmen KursNr, Titel, AngNr, Datum, Ort, PersNr 2. Potentiell relevante Entities bestimmen Kurs, Angebot, Kursleiter 3. Join-Pfad + Join-Attribute bestimmen Kurs Angebot Fuehrt_durch Kursleiter (KursNr) (AngNr,KursNr) (PersNr) 4. Optional: Abwahl der nicht benötigten Entities Kursleiter KursNr Titel AngNr Datum Ort PersNr G08 Grundlagen I München G08 Grundlagen I Bremen G10 Grundlagen II München SELECT FROM G10 Grundlagen II Hamburg k.kursnr, k.titel, f.angnr, a.datum, a.ort, f.persnr I09 I09 Datenbanken Datenbanken Stuttgart München I09 Datenbanken Hamburg Kurs AS k JOIN Angebot AS a P13 C-Programmierung Innsbruck ON k.kursnr = a.kursnr P13 C-Programmierung Essen JOIN Fuehrt_durch AS f ON a.angnr = f.angnr AND a.kursnr = f.kursnr (kürzer schreiben: ON (a.angnr, a.kursnr) = (f.angnr, f.kursnr)) 44 G. Specht: Datenbanksysteme 4-22

23 Anfrage-Beispiele cont. S19 Gib aus, welche Teilnehmer (Ausgabe: TnNr) an Kurs 'G08' oder 'G10' (Ausgabe: KursNr, AngNr, Ort) teilnehmen. Vorgehensweise Join-Formulierung 1. Attribute für die Ausgabe bestimmen: TnNr, KursNr, AngNr, Ort 2. Potentiell relevante Entities bestimmen: Teilnehmer, Angebot, Kurs 3. Join-Pfad + Join-Attribute bestimmen Teilnehmer Nimmt_teil Angebot Kurs (TnNr) (AngNr,KursNr) (KursNr) 4. Optional: Abwahl der nicht benötigten Attribute Teilnehmer (da TnNr bereits in Nimmt_teil enthalten) Kurs (da KursNr bereits in Angebot enthalten) SELECT n.tnnr, a.kursnr, a.angnr, a.ort FROM Nimmt_teil AS n JOIN Angebot AS a ON (a.kursnr, a.angnr) = (n.kursnr, n.angnr) WHERE a.kursnr = 'G08' OR a.kursnr = 'G10 Beim Selfjoin müssen der Relation Korrelationsvariablen zugeordnet werden! 45 Anfrage-Beispiele cont. S20 Gib absteigend sortiert nach Gehaltsdifferenzen alle Kursleiter aus, die weniger Gehalt als ihre Kollegen erhalten. Gib jeweils PersNr und Gehalt des weniger und des mehr verdienenden Kursleiters sowie die Gehaltsdifferenz aus. SELECT k1.persnr, k1.gehalt, k2.persnr, k2.gehalt, k2.gehalt - k1.gehalt AS Differenz FROM Kursleiter AS k1 JOIN Kursleiter AS k2 ON k1.gehalt < k2.gehalt ORDER BY Differenz DESC PersNr1 Gehalt1 PersNr2 Gehalt2 Differenz G. Specht: Datenbanksysteme 4-23

24 Anfrage-Beispiele cont. S21 Gib alle Kursangebote zusammen mit den vorliegenden Anmeldungen (TnNr) aus. SELECT a.*, nt.tnnr FROM Angebot AS a LEFT OUTER JOIN Nimmt_teil AS nt ON (a.kursnr, a.angnr) = (nt.kursnr, nt.angnr) AngNr KursNr Datum Ort TnNr 1 G München G München - 1 P Innsbruck P Innsbruck I Stuttgart I Stuttgart I Stuttgart I Stuttgart I Stuttgart G Bremen G Hamburg - 2 P Essen P Essen P Essen I Hamburg I München - 47 Anfrage-Beispiele cont. S22 Wie S21, aber zusätzlich zur Teilnehmernummer soll jeweils auch noch der Teilnehmername ausgegeben werden. SELECT a.*, nt.tnnr, t.name FROM Angebot AS a LEFT OUTER JOIN Nimmt_teil AS nt ON (a.kursnr, a.angnr) = (nt.kursnr, nt.angnr) LEFT OUTER JOIN teilnehmer t ON nt.tnnr = t.tnnr 48 G. Specht: Datenbanksysteme 4-24

25 Anfrage-Beispiele cont. S23 Gib alle Kursangebote aus, für die sich kein Teilnehmer angemeldet hat SELECT a.*, nt.tnnr FROM Angebot AS a LEFT OUTER JOIN Nimmt_teil AS nt ON (a.kursnr, a.angnr) = (nt.kursnr, nt.angnr) WHERE nt.tnnr IS NULL Anmerkungen: Die obige SQL-Anfrageformulierung mittels Outer Join ist eine von mehreren Möglichkeiten, Anfrage S23 in SQL umzusetzen. Wir werden später noch andere kennenlernen. Der Test auf Nullwert muss mittels IS NULL bzw. IS NOT NULL durchgeführt werden. = NULL bzw. <> NULL führen nicht zum gewünschten Ergebnis [1] Tests mittels IS [NOT] NULL auch ohne Outer Joins in Selektionen möglich. [1] DB2 UDB V7 gibt hier z.b. eine Fehlermeldung aus und verweigert die Ausführung 49 Vereinigung, Differenz, Durchschnitt Syntaktische Grundstruktur 50 G. Specht: Datenbanksysteme 4-25

26 Vereinigung, Differenz, Durchschnitt cont. Anmerkungen Die Ergebnis-Relationen der beiden Query-Ausdrücke (die Operanden) müssen hinsichtlich Anzahl und Typ der Spalten identisch sein. Bei Angabe von CORRESPONDING [1] wird zuvor eine Projektion auf die angegebenen Attribute durchgeführt. UNION, EXCEPT und INTERSECT führen automatisch eine Duplikateliminierung durch Durch Angabe von ALL kann dies unterdrückt werden. Die Attributnamen der Operanden-Relationen können von einander abweichen [2] Die ORDER BY-Klausel, falls angegeben, muss am Ende des Query-Ausdrucks stehen. [1] Wird noch nicht überall unterstützt [2] Bei manchen DBS werden die Attributnamen vom oberen Query-Ausdruck übernommen Bei DB2 UDB V7 werden sie bei Übereinstimmung übernommen, sonst wird die Spaltennummer eingesetzt 51 Anfrage-Beispiele zu Vereinigung, Differenz S24 Erstelle eine Namensliste mit Teilnehmernummer bzw. Personalnummer von allen Kursteilnehmern und Kursleitern (Ausgabe: Name, Nummer), Name Nummer alphabetisch nach Name sortiert Abele, I. 146 SELECT Name, TnNr AS Nummer Gerstner, M. 194 FROM Teilnehmer Huber, Chr. 145 UNION SELECT Name, PersNr AS Nummer Huber, L FROM Kursleiter Karstens, L. 187 ORDER BY Name Kircher, B. 149 Meier, I S25 Gib alle Kurse (Ausgabe: KursNr, Titel) aus, die nicht Meier, K. 185 Kurs 'G08' als Voraussetzung haben. Meier, W. 155 SELECT * Mons, F. 177 FROM Kurs Möller, H. 171 EXCEPT Müller, K SELECT Kurs.* Schmidt, M. 143 FROM Kurs JOIN Vorauss ON Vorauss.KursNr = Kurs.KursNr Schulze, B. 173 WHERE Vorauss.VorNr = 'G08' Schulze, H G. Specht: Datenbanksysteme 4-26

27 Anfrage-Beispiele zu Vereinigung, Differenz cont. S26 Gib alle Kurse aus, die am Wohnort von mindestens einem der zugehörigen Kurs-Teilnehmer angeboten werden (Ausgabe: Ort, AngNr, KursNr) SELECT FROM WHERE INTERSECT SELECT FROM t.ort, nt.angnr, nt.kursnr Teilnehmer AS t, Nimmt_teil AS nt t.tnnr = nt.tnnr a.ort, nt.angnr, nt.kursnr Angebot AS a JOIN Nimmt_teil AS nt ON (a.angnr, a.kursnr) = (nt.angnr, nt.kursnr) Ort AngNr KursNr Bremen 2 G08 Essen 2 P13 Hamburg 2 I09 Stuttgart 1 I09 Ulm 1 P13 53 UNION JOIN Konkatenation zweier Tabellen... FROM Rel1 UNION JOIN Rel2 Rel1 A B C D a1 b1 c1 d1 a2 b2 c2 d2 Rel2 E F G e1 f1 g1 e2 f2 g2 e3 f3 g3 A B C D E F G a1 b1 c1 d1 null null null a2 b2 c2 d2 null null null null null null null e1 f1 g1 null null null null e2 f2 g2 null null null null e3 f3 g3 54 G. Specht: Datenbanksysteme 4-27

28 Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen 55 Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen Anfrageform 1 SELECT Attributliste FROM Rel 1, Rel 2,, Rel n WHERE [NOT] EXISTS (Tabellenausdruck) Anmerkung: Der Subquery-Ausdruck (EXISTS) liefert nur TRUE (Treffer gefunden) oder FALSE (keine Treffer) 56 G. Specht: Datenbanksysteme 4-28

29 Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen cont. Anfrageform 2 SELECT Attributliste FROM Rel 1, Rel 2,, Rel n WHERE R i.attr_name (R i.attr_name, R j.attr_name, ) {<, <=, =, <>, >=, >} [{ANY, ALL}] (Tabellenausdruck) 57 Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen cont. Anfrageform 2 Ohne ANY-/ALL-Zusatz muss der Subquery-Ausdruck so formuliert sein, dass genau ein Attributwert oder Tupel (keine Menge!) zurückgeliefert wird. Dieser wird als Vergleichswert ( Quasi-Konstante ) im äußeren (Sub-)Query-Ausdruck verwendet [1] = ANY ist äquivalent zu IN, NOT IN ist äquivalent zu <> ALL Subquery-Ausdrücke können geschachtelt sein, d.h. sie können wiederum Subquery- Ausdrücke enthalten In Subquery-Ausdrücken kann auf Relationen von äußeren (Sub-)Query-Ausdrücken Bezug genommen werden korrelierte Subqueries (correlated subqueries) Je nach Anfragebearbeitungsstrategie bzw. Güte der Anfrageoptimierung des verwendeten DBMS können sich bei semantisch äquivalenten Anfrageformulierungen im konkreten Fall stark unterschiedliche Antwortzeiten ergeben [1] Die Klammer in (Ri.Attr_name, Rj.Attr_name,... ) fungiert als Tupel-Konstruktor 58 G. Specht: Datenbanksysteme 4-29

30 Kalkül-orientierte SQL-Konstrukte: Subqueries/Existenzbedingungen cont. Anfrageform 3 SELECT Attributliste FROM Rel 1, Rel 2,, Rel n WHERE R i.attr_name (R i.attr_name, R j.attr_name, ) [NOT] IN (Tabellenausdruck) 59 Beispiel S27 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus 'Innsbruck' gebucht haben. Algebra-Notation: π {Nimmt-teil.KursNr, Nimmt-teil.AngNr} (Nimmt-teil >< σ Ort='Innsbruck' Teilnehmer) KursN AngNr r I09 1 P G. Specht: Datenbanksysteme 4-30

31 Beispiel cont. S27 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus 'Innsbruck' gebucht haben. Join SELECT DISTINCT nt.kursnr, nt.angnr FROM Nimmt_teil AS nt JOIN Teilnehmer As t ON nt.tnnr = t.tnnr WHERE t.ort = 'Innsbruck' 61 Beispiel cont. S27 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus 'Innsbruck' gebucht haben. Subquery mit EXISTS (korrelierte Subquery) SELECT DISTINCT nt.kursnr, nt.angnr FROM Nimmt_teil AS nt WHERE EXISTS ( SELECT * FROM Teilnehmer AS t WHERE t.ort = 'Innsbruck' AND t.tnnr = nt.tnnr ) 62 G. Specht: Datenbanksysteme 4-31

32 Beispiel cont. S27 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus 'Innsbruck' gebucht haben. Subquery mit ANY (nicht-korrelierte Subquery) SELECT DISTINCT nt.kursnr, nt.angnr FROM Nimmt_teil AS nt WHERE nt.tnnr = ANY ( SELECT TnNr FROM Teilnehmer WHERE Ort = 'Innsbruck ) 63 Beispiel cont. S27 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus 'Innsbruck' gebucht haben. Subquery mit IN(nicht-korrelierte Subquery) SELECT DISTINCT nt.kursnr, nt.angnr FROM Nimmt_teil AS nt WHERE nt.tnnr IN ( SELECT TnNr FROM Teilnehmer WHERE Ort = 'Innsbruck ) 64 G. Specht: Datenbanksysteme 4-32

33 Beispiel cont. Anmerkungen Wir werden später eine alternative Formulierung zu der EXISTS-Formulierung mittels COUNT kennenlernen Bereits am Anfang dieses Kapitels hat wir die Anfrageform... WHERE TnNr IN (173, 179, 135) kennengelernt. Sie stellt einen (einfachen) Tabellenausdruck dar 65 Schematische Darstellung der nicht-korrelierten und korrelierten Subqueries nicht-korreliert korreliert 66 G. Specht: Datenbanksysteme 4-33

34 Beispiel S28 Gib alle Kursangebote (Ausgabe: Angebots-Tupel) aus, für die keine Anmeldungen vorliegen. Alternative 1 SELECT a.* FROM Angebot AS a WHERE NOT EXISTS ( SELECT * FROM Nimmt_teil AS nt WHERE (a.angnr, a.kursnr) = (nt.angnr, nt.kursnr) ) Alternative 2 SELECT a.* FROM Angebot AS a WHERE (AngNr, KursNr) NOT IN ( SELECT AngNr, KursNr FROM Nimmt_teil ) 67 Beispiel S29 Gib die Personalnummer des Kursleiters mit dem höchsten Gehalt aus SELECT k1.persnr FROM Kursleiter AS k1 WHERE NOT EXISTS ( SELECT * FROM Kursleiter AS k2 WHERE k2.gehalt > k1.gehalt ) Alternative Formulierung ALL-Quantor SELECT k1.persnr FROM Kursleiter AS k1 WHERE k1.gehalt >= ALL ( SELECT k2.gehalt FROM Kursleiter AS k2 ) 68 G. Specht: Datenbanksysteme 4-34

35 Beispiel S30 Gib alle Kurse aus (Ausgabe: Angebot-Info), die Teilnehmer(in) 'Schmidt, M.' oder 'Abele, I.' gebucht hat. SELECT * FROM Angebot WHERE (AngNr, KursNr) IN ( SELECT AngNr, KursNr FROM Nimmt_teil WHERE TnNr = ( SELECT TnNr FROM Teilnehmer WHERE Name = 'Schmidt, M.' OR Name = 'Abele, I. ) ) Führt zu Fehlermeldung. In DB2 beispielsweise zu: SQL0811N Das Ergebnis einer Skalargesamtauswahl, der Anweisung SELECT INTO oder der Anweisung VALUES INTO besteht aus mehr als einer Zeile. SQLSTATE=21000 Wo liegt der Fehler? "TnNr =" : Hier muss genau ein Wert zurückgeliefert werden, es kommt aber eine Menge zurück (Die Lösung ist: ANY verwenden) 69 Aggregatfunktion und Gruppierung 70 G. Specht: Datenbanksysteme 4-35

36 Aggregatfunktion und Gruppierung SQL bietet standardmäßig die folgenden eingebauten Mengen-Funktionen an Funktion COUNT(*) COUNT([DISTINCT] Attributname) MAX(Attributname) MIN(Attributname) AVG([DISTINCT] Attributname) SUM([DISTINCT] Attributname) Bedeutung Anzahl der Tupel Anzahl der Attributwerte Maximum der Attributwerte Minimum der Attributwerte Durchschnitt der Attributwerte Summe der Attributwerte 71 Aggregatfunktion und Gruppierung S31 Gib die Anzahl aller Kursteilnehmer aus SELECT COUNT(*) FROM Teilnehmer S32 Gib die Anzahl aller Kursteilnehmer aus 'Innsbruck' aus SELECT COUNT(*) FROM Teilnehmer WHERE Ort = Innsbruck Wenn eine SELECT-Anweisung eine Aggregatfunktion enthält, so wird nur genau ein Resultat-Tupel erzeugt [1] (Ausnahme: Bei Verwendung der GROUP BY-Klausel, siehe später)) [1] Bei leerer Tabelle wird ein Nullwert zurückgeliefert. 72 G. Specht: Datenbanksysteme 4-36

37 Beispiele S33 Gib das durchschnittliche Gehalt aller Kursleiter aus. SELECT AVG(Gehalt) FROM Kursleiter S34 Gib das höchste, das niedrigste und das durchschnittliche Kursleiter-Gehalt sowie die Summe aller Gehälter aus. SELECT MAX(Gehalt) AS MaximalesGehalt, MIN(Gehalt) AS MinimalesGehalt, AVG(Gehalt) AS AvgGehalt, SUM(Gehalt) AS SumGehalt FROM Kursleiter 73 Beispiele cont. S35 Gib die Personalnummer des Kursleiters mit dem höchsten Gehalt aus (Anfrage S29 mittels Aggregat-Funktion formuliert) SELECT PersNr FROM WHERE Kursleiter Gehalt = (SELECT MAX(Gehalt) FROM Kursleiter) S36 Gib die Anzahl der verschiedenen Orte aus, aus denen die Kursteilnehmer kommen SELECT COUNT(DISTINCT Ort) FROM Teilnehmer 74 G. Specht: Datenbanksysteme 4-37

38 Beispiele cont. S37 Gib alle Kursangebote aus (Ausgabe: KursNr, AngNr), für die Teilnehmer aus Innsbruck gebucht haben. SELECT nt.kursnr, nt.angnr FROM Nimmt_teil AS nt WHERE 0 < ( SELECT COUNT(*) FROM Teilnehmer AS t WHERE t.ort = 'Innsbruck' AND t.tnnr = nt.tnnr ) 75 Beispiele cont. S38 Gib auf Basis der Teilnehmer-Relation eine ortsbezogene Teilnehmerstatistik aus (Ausgabe: Ortsname, Teilnehmerzahl) SELECT Ort, COUNT...? FROM Teilnehmer Lösung-> Gruppierung SELECT Ort, COUNT(Ort) As Anzahl FROM Teilnehmer GROUP BY Ort Ort Anzahl Augsburg 1 Bochum 1 Bremen 1 Essen 1 Hamburg 1 Heidelberg 1 Senden 1 Stuttgart 2 Innsbruck 2 76 G. Specht: Datenbanksysteme 4-38

39 Gruppierung Syntaktische Struktur SELECT [ ALL DISTINCT ] Attributliste FROM Tabellenausdruck [ WHERE Nebenbedingung ] [ GROUP BY Gruppierungsattribut(e) [ HAVING Gruppierungsbedingung ] ] [ ORDER BY Attributliste ] Erläuterung und ergänzende Kommentare GROUP BY bewirkt (interne) Teilmengenbildung (Gruppierung) der Ergebnisrelation entsprechend dem Gruppierungsattribut bzw. den -attributen ( Menge von Mengen) Aggregationsfunktionen werden jeweils auf Teilmengen (falls vorhanden) angewandt Joins werden vor Anwendung der Gruppierungsfunktion ausgeführt, (Reihenfolge jetzt also: FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY) In der SELECT-Klausel können bei Angabe von GROUP BY neben Aggregat- Funktionen auch Attribute (und nur solche!) stehen, nach denen gruppiert wird. Gruppierungsnebenbedingungen werden mittels HAVING-Klausel ausgedrückt (HAVING kann nur in Verbindung mit GROUP BY auftreten) 77 Where und Having Unterschied zwischen WHERE und HAVING WHERE eliminiert Zeilen HAVING eliminiert Gruppen 78 G. Specht: Datenbanksysteme 4-39

40 Beispiel S39 Gib für alle Kursangebote die Anzahl der Anmeldungen aus (Ausgabe: Angebote-Attribute, Anzahl Teilnehmer). SELECT a.*, COUNT(TnNr) As Anzahl FROM Angebot AS a LEFT OUTER JOIN Nimmt_teil AS nt ON (a.angnr, a.kursnr) = (nt.angnr, nt.kursnr) GROUP BY a.angnr, a.kursnr, a.datum, a.ort AngNr KursNr Datum Ort Anzahl 1 G München 1 1 G München 0 1 I Stuttgart 5 1 P Innsbruck 2 2 G Bremen 1 2 G Hamburg 0 2 I Hamburg 1 2 P Essen 3 3 I München 0 79 Beispiel cont. S40 Wie S39, aber nur solche Kurse ausgeben, für die mehr als zwei Anmeldungen vorliegen. SELECT a.*, COUNT(*) As Anzahl FROM Angebot AS a JOIN Nimmt_teil AS nt ON (a.angnr, a.kursnr) = (nt.angnr, nt.kursnr) GROUP BY a.angnr, a.kursnr, a.datum, a.ort HAVING COUNT(*) > 2 AngNr KursNr Datum Ort Anzahl 1 I Stuttgart 5 2 P Essen 3 80 G. Specht: Datenbanksysteme 4-40

41 Beispiel cont. S41 Gib alle Kursleiter aus, die mindestens zwei Kurse leiten. Ausgabe: Personaldaten, Angebotsdaten, sortiert nach PersNr SELECT kl.*, a.* FROM Angebot AS a JOIN Fuehrt_durch AS fd ON (a.angnr, a.kursnr) = (fd.angnr, fd.kursnr) JOIN Kursleiter AS kl ON fd.persnr = kl.persnr WHERE kl.persnr IN ( SELECT PersNr FROM Fuehrt_durch GROUP BY PersNr HAVING COUNT(*) >= 2 ) ORDER BY kl.persnr PersNr Name Gehalt AngNr KursNr Datum Ort Meier, I. 4300,50 1 P Innsbruck Meier, I. 4300,50 2 P Essen Schulze, H. 3890,20 1 I Stuttgart Schulze, H. 3890,20 2 G Hamburg Schulze, H. 3890,20 2 I Hamburg Schulze, H. 3890,20 3 I München Huber, L. 4200,10 1 G München Huber, L. 4200,10 2 G Bremen 81 Beispiel cont. S42 Gib alle Kurstypen (KursNr) - mit Ausnahme der Grundlagenkurse ('G08', G10 ) - aus, für die mehr als 4 Anmeldungen vorliegen SELECT nt.kursnr, k.titel, COUNT(*) As Anzahl FROM Nimmt_teil AS nt JOIN Kurs AS k ON nt.kursnr = k.kursnr GROUP BY nt.kursnr, k.titel HAVING COUNT(*) > 4 AND nt.kursnr NOT IN ('G08', 'G10') KursNr Titel Anzahl I09 Datenbanken 6 P13 C-Programmierung 5 82 G. Specht: Datenbanksysteme 4-41

42 Anmerkung zur Verwendung von GROUP BY In der SELECT-Klausel dürfen nur Attribute stehen, die auch in der GROUP-BY- Klausel auftreten: SELECT AngNr, KursNr, COUNT(*) FROM Angebot GROUP BY AngNr, KursNr Der folgende Ausdruck ist nicht korrekt: SELECTAngNr, KursNr, Datum, COUNT(*) FROM Angebot GROUP BY AngNr, KursNr Warum? Je Gruppe nur ein Resultat-Tupel ausgegeben. Jede Spalte, die ausgegeben werden soll, darf daher innerhalb einer Gruppe keine unterschiedlichen Werte aufweisen SQL erzwingt dies dadurch, dass nur solche Attribute in der SELECT-Zeile auftreten dürfen, die auch in der GROUP-BY-Klausel auftreten 83 Rekursive Anfragen 84 G. Specht: Datenbanksysteme 4-42

43 Rekursive Anfragen Beobachtung Es gibt (einfache) Anfragen, die mit relational vollständigen Sprachen (z.b. Algebra, Kalkül) nicht formulierbar sind. Beispiele Vorfahren (ancestors) gegeben: Relation Eltern (E, K) Tupel <e, k> bedeutet Person e ist Elternteil von k gesucht: Alle Vorfahren/Nachfahren von Person p Stückliste (parts explosion, BOMP ) gegeben: Relation STL (OT, UT, ANZ) gesucht: Alle Einzelteile (evtl. mit Anzahl) zu einem Endzwischenprodukt t Wegesuche (path queries) gegeben: Relation Wegstück (von,nach, Entfernung) gesucht: Kürzester/längster Weg von a nach b Problem Relationale Operationen (z.b. Algebra) können jeweils nur einen Schritt der Ableitung berechnen. Es fehlt ein Schleifen -Konstrukt zur Hüllenberechnung ( transitive Hülle ). Möglicher Ansatz: Rekursive Formulierung ( Fixpunktberechnung ) 85 Zur Berechnung von Fixpunkten Vgl. PROLOG: Fakten Regeln eltern(adam,kain). eltern(adam, abel). eltern(eva, kain). eltern(eva, abel). eltern(abel, sem). vorfahre(x,y) vorfahre(x,y) geschwister(x,y) :- eltern(x,y). :- vorfahre(x,z), eltern(z,y). :- eltern(z,x), eltern(z,y). π Wunsch: Erweiterung von relationalen DBMSen um Regeln + Inferenzfähigkeiten Deduktive Datenbanken Erweiterte Abfragesprache z.b.: Datalog 86 G. Specht: Datenbanksysteme 4-43

44 Einschub: Deduktive Datenbanken DATALOG DATALOG [1] = PROLOG ohne Funktionssymbole, keine Reihenfolge-Abhängigkeiten, CUT, FAIL,... reine Horn-Klauseln, d.h. Formeln der Prädikatenlogik erster Stufe der Form (zunächst ohne Negation!): p (... ) q 1 (... )... q n (... ) Head Body wobei alle Argumente nur Konstanten oder Variablen, alle Variablen -quantifiziert. Spezielle Formen dieser Regeln: Body leer (n = 0) Faktum i : 1 i n : q i = p rekursive Regel Fakten Tupel von DB-Relationen ( extensionale DB, EDB) Regeln Algebra-Ausdrücke, Ableitungsregeln ( intensionale DB, IDB) vgl. virtuelle Relationen, Sichten (Views) [1] Eine kurze Einführung in Datalog findet sich in Lang/Lockemann, Kapitel 7 (siehe Basisliteratur), eine etwas ausführlichere Einführung findet sich z.b. in Vossen/Witt: Entwicklungstendenzen bei Datenbanksystemen, Kapitel 3, Oldenbourg Verlag, 1991 oder in Ullman (siehe Basisliteratur) 87 Einschub: Deduktive Datenbanken DATALOG cont. Im (PROLOG-) Beispiel von oben: EDB = { Eltern (E, K) } IDB = { Vorfahre (V, N), Geschwister (X, Y) } wobei: Geschwister (X, Y) := π K1,K2 E E E1 = E2 K1 K2 V = π X,K (V Vorfahre (X, Y) :=...?... wiederholter Join von Eltern und Vorfahren Rekursion! Bemerkung: Umbenennung der Attibute E) E fehlt hier rekursive Gleichung für V des Typs x = f(x) Da ( Basis -) DATALOG monoton ist (keine Negation!) gilt: Es gibt einen (eindeutigen) kleinsten Fixpunkt (least fix point) solcher Gleichungen! Vorfahre := Eltern Eltern Eltern Eltern Oma+Opa (Eltern Eltern) Eltern Urgroßeltern ( ( Eltern Eltern) Eltern) Eltern Ur-Urgroßeltern Abbruch, falls alle Vorfahren erreicht, d.h. wenn neue Verknüpfung mittels " " keine neue Fakten mehr ableitet! Vorfahre endlich, da Eltern endlich! 88 G. Specht: Datenbanksysteme 4-44

45 Zur Berechnung von Fixpunkten cont. 1. Naive Iteration Ansatz: Schleife über π - A - Ausdruck, solange bis keine Änderung mehr Im Beispiel (Eltern, Vorfahren) V 1 := E; i := 1 repeat V i+1 := ( V i o E ) V i ; until V i+1 = V i Anmerkung Wegen Monotonie gilt immer V i V i+1, daher werden bereits bekannte Vorfahren immer neu berechnet! Abhilfe: Berechne jeweils nur ΔV i neu 2. Semi-Naive Iteration (D - Iteration) Im Beispiel V o := ; Δ 1 := E; i := 1; repeat V i := V i-1 Δ i ; Δ i+1 := (Δi o E ) - V i ; i := i + 1 until Δ i = 89 SQL: Rekursive Vereinigung (recursive union) WITH rectable (attr1, attr2,..., attrn) AS (SFW-Statement1 /* Rekursionsinitialisierung */ UNION ALL SFW-Statement2 /* Rekursionsschritt */ ) SELECT [ DISTINCT ] attributliste FROM rectable [ WHERE...] [ GROUP BY... ] [ HAVING... ] [ ORDER BY... ] Erläuterungen Bei der WITH-Klausel handelt es sich um einen sog. Common Table Expression, wie er mit SQL:1999 eingeführt wurde. SFW-Statement1 darf keine DISTINCT-Klausel enthalten. Es muss UNION ALL angegeben werden SFW-Statement2 üblicherweise ein JOIN, bei dem auf rectable Bezug genommen wird. Die Rekursion endet, wenn in einem Rekursionsschritt keine weiteren Tupel mehr hinzukommen. Der Anwender muss selbst darauf achten, dass Rekursion auch endet (Endlos-Schleifen sind möglich!) Logisches Ausführungsmodell: semi-naive Iteration (siehe vorherige Folie) 90 G. Specht: Datenbanksysteme 4-45

46 Rekursion Beispiel Die folgende Relation beschreibt, welches Unterteil in welcher Anzahl im jeweiligen (Ober-)Teil enthalten ist Gozintograph 4 Stueckliste Teil UTeil Anzahl Rekursion Beispiel cont. R1 Ermittle alle Teile (und deren Anzahl), die benötigt werden, um Teil 01 zu fertigen. WITH RecRel(Teil, UTeil, Anzahl) AS (SELECT init.teil, init.uteil, init.anzahl FROM Stueckliste AS init WHERE init.teil = 01 UNION ALL SELECT kind.teil, kind.uteil, kind.anzahl FROM RecRel AS vater JOIN Stueckliste AS kind ON vater.uteil = kind.teil ) SELECT Teil, UTeil, Anzahl (*) FROM RecRel Dies führt zu folgender Ergebnisrelation: Duplikate Hinweis Erg1 ohne Duplikate: SELECT DISTINCT in (*) verwenden Teil UTeil Menge Initialisierungsschritt oberes SQL-Stmt 1. Rekursionsschritt 2. Rekursionsschritt 92 G. Specht: Datenbanksysteme 4-46

47 Rekursion Beispiel cont. R2: Bestimme die Unterteile und deren Anzahl, die benötigt werden, um ein Exemplar des Teils 01 herzustellen. Lösung ( von Hand ): 1. Wir ermitteln, welche Unterteile in welcher Anzahl in Teil 01 eingehen: Teil 02: Anzahl = 2 Teil 03: Anzahl = 3 Teil 04: Anzahl = 4 Teil 06: Anzahl = 3 2. Dann ermitteln wir für jedes Teil aus Schritt 1, welche Unterteile in welcher Anzahl in Teil 01 (!) eingehen: Teil 02 besteht aus: (Unter-)Teil 05 mit Anzahl = 7, damit Anzahl von Teil 05 bzgl. Teil 01: 7 * 2 = 14 usw. 3. Dann ermitteln wir für jedes Teil aus Schritt 2, welche Unterteile in welcher Anzahl in Teil 01 (!) eingehen: Teil 05 besteht aus: (Unter-)Teil 10 mit Anzahl = 10, damit Anzahl von Teil 10 bzgl. Teil 01: 10 * 14 = 140 usw. 4. Dies führen wir analog solange durch, bis wir keine weiteren Unterteile mehr erhalten. 5. Da einige Unterteile in verschiedene (Ober-)Teile eingehen (wie z.b. die Teile 06 und 12), müssen wir unsere in Schritt 1 bis 4 ermittelte Teile-Anzahl-Liste noch verdichten, indem wir den Teilebedarf mehrfach vorhandener Teile (in unserer Ergebnisliste) zusammenaddieren. 93 Rekursion Beispiel cont. Dies führt zu folgenden Iterationsschritten mit folgenden Ausgaben : Teil UTeil Anzahl Anmerkung über Weg [1] Initialisierung Iteration Iteration [1] Siehe Gozintograph G. Specht: Datenbanksysteme 4-47

48 Rekursion Beispiel cont. Die Anzahlen der mehrfach verwendeten Unterteile 6, 12 und 14 aufaddiert führt dann zu folgender Ergebnistabelle (geordnet nach UTeil): Teil 01 UTeil 02 Gesamtbedarf Dasselbe Ergebnis liefert die folgende SQL-Anfrage WITH RecRel (Teil, UTeil, Anzahl) AS (SELECT init.teil, init.uteil, init.anzahl FROM Stueckliste AS init WHERE init.teil = UNION ALL SELECT vater.teil, kind.uteil, vater.anzahl * kind.anzahl FROM RecRel AS vater JOIN Stueckliste AS kind ON vater.uteil = kind.teil ) SELECT Teil, UTeil, SUM(Anzahl) ASGesamtbedarf FROM RecRel GROUP BY Teil, UTeil ORDER BY Teil, UTeil 95 Beschränkung der Tiefensuche R3: Ermittle alle Teile (und deren Anzahl) bis Stufe 2, die benötigt werden, um Teil 01 zu fertigen. WITH RecRel(Stufe, Teil, UTeil, Anzahl) AS ( SELECT 1, init.teil, init.uteil, init.anzahl FROM Stueckliste AS init WHERE init.teil = 01 UNION ALL SELECT vater.stufe+1, kind.teil, kind.uteil, kind.anzahl FROM RecRel AS vater JOIN Stueckliste AS kind ON vater.uteil = kind.teil WHERE vater.stufe < 3 ) SELECT Teil, Stufe, UTeil, Anzahl Kontrolle der FROM RecRel Rekursionstiefe Initialisierung und Inkrementierung Stufenzähler Resultat: Teil Stufe UTeil Anzahl G. Specht: Datenbanksysteme 4-48

49 Bedeutung und Behandlung von Nullwerten 97 Bedeutung und Behandlung von Nullwerten Nullwerte haben die Bedeutung Wert nicht bekannt und sind verschieden von dem numerischen Wert 0 und einer Zeichenkette der Länge 0. Behandlung von Nullwerten Selektion bzgl. Nullwerten:... WHERE Attrib IS [ NOT ] NULL Sortieren nach nullwertigem Attribut: Tupel mit Nullwerten in dem betreffenden Attribut stehen stets am Anfang der Ergebnis-Tabelle, egal ob ASC oder DESC angegeben wurde. In arithmetischen Ausdrücken: Wenn einer oder beide Operanden nullwertig sind, ist das Ergebnis NULL. Logische Ausdrücke werden nach den folgenden Tabellen berechnet: not true false unknown unknown false true and true unknown false true true unknown false unknown unknown unknown false false false false false or true unknown false true true true true unknown true unknown unknown false true unknown false Bei Gruppierung (GROUP BY) nach nullwertigem Attribut: Nullwert wird wie ein normaler Wert behandelt, bildet ggf. eine eigene Gruppe. Bei Anwendung von Aggregatfunktionen (AVG, SUM, COUNT,...): Nullwerte werden bei der Auswertung ignoriert. 98 G. Specht: Datenbanksysteme 4-49

50 Nullwert Beispiel SELECT Gebuehren.*, Gebuehr AS GebMinus100 FROM Gebuehren Gebuehren AngNr KursNr TnNr Gebuehr 2 G P G Nullwert 1 P I Nullwert 2 P I Nullwert 1 I Nullwert 1 I P Nullwert 1 I I Nullwert 1 P Nullwert AngNr KursNr TnNr Gebuehr GebMinus100 2 G P G P I P I I I P I I P Nullwert Beispiel cont. SELECT COUNT(*) AS Anz, SUM(Gebuehr) AS Sum, SUM(Gebuehr)/COUNT(*) As Sum_durch_Anz, AVG(Gebuehr) As Avg FROM Gebuehren Anz Sum Sum_durch_Anz Avg SELECT AngNr, KursNr, SUM(Gebuehr) AS Sum, AVG(Gebuehr) AS Avg FROM Gebuehren AngNr KursNr Sum Avg GROUP BY KursNr, AngNr ORDER BY KursNr, AngNr 1 2 G08 G I I P P SELECT * FROM Gebuehren ORDER BY KursNr, AngNr AngNr KursNr TnNr Gebuehr 1 G G I I I I I I P P P P P G. Specht: Datenbanksysteme 4-50

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

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

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

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

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

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

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

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Fahren fort mit SQL Befehlen. Bilden Relationenalgebra auf SQL ab. So Umsetzung von Anfragen an die DB (bzw. Tabellen) möglich. SELECT

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

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

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

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. 7 Übung zur Vorlesung Grundlagen: Datenbanken im WS13/14 Henrik Mühe (muehe@in.tum.de) http://www-db.in.tum.de/teaching/ws1314/dbsys/exercises/

Mehr

Vorlesung Datenbankmanagementsysteme

Vorlesung Datenbankmanagementsysteme Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse & Einführung Online Analytical Processing (OLAP) (auf Basis von Oracle) Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse M. Lange, S.

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

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten. Einführung SQL 2010 Niko Becker Mit unseren Übungen zu ACCESS können Sie Aufbau und Struktur einer relationalen Datenbank kennenlernen. Wir zeigen Ihnen wie Sie Tabellen, Formulare und Berichte erstellen

Mehr

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln Structured Query Language, SQL vom American National Standards Institute, ANSI, genormte Datenbanksprache. enthält eine Teilsprache, die eine relationale Anfragesprache ist, Mischung von tupelorientierten

Mehr

7. Übung - Datenbanken

7. Übung - Datenbanken 7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen

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

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Abfragen: Grundbausteine

Abfragen: Grundbausteine Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt:

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien 1.1 Definition Datenbank Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS

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

3. Das Relationale Datenmodell

3. Das Relationale Datenmodell 3. Das Relationale Datenmodell Das Relationale Datenmodell geht zurück auf Codd (1970): E. F. Codd: A Relational Model of Data for Large Shared Data Banks. Comm. of the ACM 13(6): 377-387(1970) DBMS wie

Mehr

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

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

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

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung Betrifft Optimizer Autor Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Quelle Aus unserer Projekterfahrung und Forschung Einführung Mit jedem Oracle Release nimmt die Anzahl

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik Beispielaufgaben Informationssysteme erstellt von Fabian Rump zur IS Vorlesung 2009/10 1 Multiple Choice Aussage richtig falsch Eine SQL-Abfrage beginnt immer mit dem Schlüsselwort SELECT Eine Datenbank

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Vorlesung Dokumentation und Datenbanken Klausur

Vorlesung Dokumentation und Datenbanken Klausur Dr. Stefan Brass 5. Februar 2002 Institut für Informatik Universität Giessen Vorlesung Dokumentation und Datenbanken Klausur Name: Geburtsdatum: Geburtsort: (Diese Daten werden zur Ausstellung des Leistungsnachweises

Mehr

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Hauptseminar: Nichtrelationale Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Mai 2006 Was ist eine Datenbank? Erweiterung relationaler um eine Deduktionskomponente Diese

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Ein Ausflug zu ACCESS

Ein Ausflug zu ACCESS Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

3. Stored Procedures und PL/SQL

3. Stored Procedures und PL/SQL 3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln

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

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis. SQL Lehr- und Forschungseinheit Datenbanken und Informationssysteme Ziele Grundlagen von SQL Beziehung zur relationalen Algebra SELECT, FROM, WHERE Joins ORDER BY Aggregatfunktionen Lehr- und Forschungseinheit

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

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

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

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 6. Übung zur Vorlesung Datenbanken im Sommersemester 2007 mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 Aufgabe 1: Rekursion Betrachten Sie die folgende Tabelle

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller

Mehr

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL XAMPP-Systeme Teil 3: My SQL Daten Eine Wesenseigenschaft von Menschen ist es, Informationen, in welcher Form sie auch immer auftreten, zu ordnen, zu klassifizieren und in strukturierter Form abzulegen.

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

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 Performance - Tips Do's & Don'ts

SQL Performance - Tips Do's & Don'ts SQL Performance - Tips Do's & Don'ts S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis I. Richtlinien bei der Verwendung von SQL 1.1. In Programmen "verbotene" SQL- Anweisungen 1.2 SQL

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Abfrage-Befehle in MySQL -diverse Funktionen -

Abfrage-Befehle in MySQL -diverse Funktionen - Abfrage-Befehle in MySQL -diverse Funktionen - Berechnungen mit MySQL -Einführung Ich liebe Funktionen! Es sollen die Projektbezeichnung, der Auftragswert, die Mehrwertsteuer und der Bruttobetrag für jedes

Mehr

Sichten II. Definition einer Sicht. Sichten. Drei-Ebenen-Schema-Architektur. Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank

Sichten II. Definition einer Sicht. Sichten. Drei-Ebenen-Schema-Architektur. Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank Vorteile Vereinfachung von Anfragen Strukturierung der Datenbank Sichten II logische Datenunabhängigkeit (Sichten stabil bei Änderungen der Datenbankstruktur) Beschränkung von Zugriffen (Datenschutz) Definition

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

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

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

Kurzanleitung für Umsteiger von DataEase. www.datacool.net

Kurzanleitung für Umsteiger von DataEase. www.datacool.net DataCool Kurzanleitung für Umsteiger von DataEase www.datacool.net Copyright 2009 Ingenieurbüro Neuhahn GmbH Tengstr. 3 85055 Ingolstadt DataCool ist ein eingetragenes Warenzeichen (Registernummer 30239297)

Mehr

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage. SELECT-FROM SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage. Inhaltsverzeichnis 1 Der grundlegende Aufbau 2 Doppelte

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

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

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Gesicherte Prozeduren

Gesicherte Prozeduren Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.

Mehr

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join Parsen der Anfrage (SQL) Transformation in eine Standardform (Relationenalgebra) Logische Optimierung Transformation in alternative Zugriffspläne, Physische Optimierung Ausführung des gewählten Zugriffsplans

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Mitgliederbereich (Version 1.0) Bitte loggen Sie sich in den Mitgliederbereich mit den Ihnen bekannten Zugangsdaten

Mehr

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

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1) Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)

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

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

DB2 Kurzeinführung (Windows)

DB2 Kurzeinführung (Windows) DB2 Kurzeinführung (Windows) Michaelsen c 25. Mai 2010 1 1 Komponenten von DB2 DB2 bietet zahlreiche graphische Oberflächen für die Verwaltung der verschiedenen Komponenten und Anwendungen. Die wichtigsten

Mehr

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

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

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

5.3 Datenänderung/-zugriff mit SQL (DML)

5.3 Datenänderung/-zugriff mit SQL (DML) 5.3 Datenänderung/-zugriff mit SQL (DML) Hinweis: - DML-Anweisungen sind mengenorientiert - Mit einer Anweisungen kann mehr als ein Tupel eingefügt, geändert, gelöscht oder gelesen werden Benutzungs- und

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

5. Übung: PHP-Grundlagen

5. Übung: PHP-Grundlagen 5.1. Erstes PHP-Programm 1. Schreiben Sie PHP-Programm innerhalb einer Webseite, d.h. innerhalb eines HTML-Dokument. Ihr PHP-Programm soll einen kurzen Text ausgeben und Komentare enthalten. Speichern

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Fachhochschule Deggendorf Platzziffer:...

Fachhochschule Deggendorf Platzziffer:... Sommersemester 2008 Zahl der Blätter: 9 Fachbereich: Betriebswirtschaft WI Bachelor Hilfsmittel: alles ohne Computer Zeit: 90 Minuten 1 Betrachten Sie die drei markierten Zeilen. 1. Angenommen Sie hätten

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr