Vorlesung #5 SQL (Teil 2).

Slides:



Advertisements
Ähnliche Präsentationen
ER-Datenmodell und Abfragen in SQL
Advertisements

Projekt: Datenbankentwurf
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 2 SQL Anfragen.
Kapitel 2 SQL Anfragen.
SQL als Abfragesprache
Der letzte Schliff für Abfragen Übersicht über die Aggregatfunktionen.
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Erhard Künzel für Info 9. Klasse: digitale-schule-bayern.de © Erhard Künzel.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
SQL-Datentypen INTEGER
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein
Datenbankentwicklung IV-LK
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Befehle in SQL Erläuterungen.
Datenbanksysteme für hörer anderer Fachrichtungen
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Aggregatsfunktion SQL = Structured Query Language.
Vorlesung #10 Physische Datenorganisation
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
Aggregatsfunktion mit Group by und having SQL = Structured Query Language.
Am Beispiel der Tabelle Crew des Raumschiffes Enterprise
Verdichten von Daten mit Gruppenfunktionen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
Structured Query Language
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
Vorlesung #5 SQL (Teil 2).
1 Sichten-Änderungen (1) Änderungen von Sichten sind i.d.R. problematisch, da sie in entsprechende Änderungen der Basisrelationen überführt werden müssen.
Semantische Integritätsbedingungen  AIFB SS trigger-Klausel (2/5) Beispiel 3-5: Angestellter: (Ang-Nr, Ang-Name, Gehalt,Familienstand, Abt-Bez).
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
1 Gruppierung, Aggregierung und Sortierung (1) Finde für jeden Flugzeugtyp die Zahl aller von Frankfurt abgehenden Flüge und sortiere Ergebnis nach Flugzeugtyp:
Vorlesung Datenbanksysteme vom Anfragebearbeitung  Logische Optimierung.
Vorlesung Datenbanksysteme vom : Wiederholung Anfragebearbeitung  Logische Optimierung.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
 standardisierte -Datendefinitionssprache (DDL) -Datenmanipulationssprache (DML) -Anfragesprache (Query)  derzeit aktueller Standard ist SQL 3  objektrelationale.
Institut für Informationssysteme
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Vorlesung #9 Anfragebearbeitung
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Aggregatfunktionen.
Vorlesung #9 Anfragebearbeitung
Vorlesung #6 SQL (Teil 3).
Wirtschaftsinformatik
Vorlesung #7 SQL (Teil 4).
Funktionen, GROUP BY, HAVING Views anlegen und verwenden
Indexierung Oracle: indexes Indexierung.
Nutzung und Modellierung von Datenbanken
(Structured Query Language)
 Präsentation transkript:

Vorlesung #5 SQL (Teil 2)

„Fahrplan“ Kanonische Übersetzung (SQL  relationale Algebra) Pen & Paper ReLaX ORACLE (Explain Plan) Aggregation und Gruppierung NULL -Werte, 3-wertige Logik Geschachtelte Anfragen in SQL

Beispiel

Beispiel (2)

Beispiel (3)

Auswertungsplan (F10 – Explain Plan)

Auswertungsplan 2 (F10 – Explain Plan)

Aggregatfunktionen min, max, avg, sum, count SELECT min(Semester) FROM Studenten; SELECT max(Semester) SELECT avg(Semester) SELECT sum(Semester) SELECT count(MatrNr), -- count(*) count(DISTINCT Semester)

... mit Gruppierung min, max, avg, sum, count mit GROUP BY select gelesenVon, sum (SWS) from Vorlesungen group by gelesenVon; mit HAVING select gelesenVon, Name, sum (SWS) from Vorlesungen, Professoren where gelesenVon = PersNr and Rang = ´C4´ group by gelesenVon, Name having avg (SWS) >= 3;

Besonderheiten bei Aggregatoperationen SQL erzeugt pro Gruppe ein Ergebnistupel Deshalb müssen alle in der select-Klausel aufgeführten Attribute - außer den aggregierten – auch in der group by-Klausel aufgeführt werden Nur so kann SQL sicherstellen, dass sich das Attribut nicht innerhalb der Gruppe ändert SELECT A1, A2, An, count(*) FROM ... WHERE .. GROUP BY A1, A2, An

Ergebnis der Abfrage gelesenVon Name sum (SWS) 2125 Sokrates 10 2137 Kant 8

Nullwerte unbekannter Wert „wird vielleicht später nachgereicht“ Nullwerte können auch im Zuge der Anfrageauswertung entstehen (Bsp. äußere Joins) manchmal sehr überraschende Anfrageergebnisse, wenn Nullwerte vorkommen UPDATE studenten SET semester = '' WHERE matrnr = 24002; select count (*) from Studenten where Semester < 13 or Semester >= 13 Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt !!!

Nullwerte (2) NULL + 1 = NULL, NULL * 1 = NULL Beispiele (Oracle) SELECT NULL + 2 FROM Dual; SELECT NULL * 2 Dual ist so etwas wie „Dummy“-Tabelle in Oracle Es gilt die sogenannte 3-wertige Logik in SQL

3-wertige Logik (NULL Logik) not TRUE FALSE NULL and TRUE NULL FALSE or TRUE NULL FALSE

Regeln für NULL Werte In arithmetischen Ausdrücken werden NULL Werte propagiert (NULL + 3 = NULL) Es gilt die 3-wertige Logik. Vergleichsoperatoren (=, >,<=) liefern immer NULL zurück, wenn mindestens ein Argument NULL ist Logische Ausdrücke werden entsprechend den vorgestellten 3-wertige-Logik Tabellen ausgewertet Tupeln mit NULL als Ergebnis in einer WHERE Klausel werden nicht weitergereicht, d.h NULL Werte werden in WHERE Klauseln ausgelassen Bei Gruppierung ist NULL ein eigenständiger Wert

Behandlung von NULL Werten (Oracle und SQL-92) In Oracle gibt es eine „null value“ Funktion nvl (if NULL then): SELECT nvl(NULL,5) + 2 AS Result FROM Dual; Result ------ 7 Man kann NULL Werte mit IS NULL oder IS NOT NULL testen (SQL-92)

Geschachtelte Anfragen In SQL ist es möglich, SELECT Anweisungen auf viele Weisen zu verknüpfen und zu verschachteln Man unterscheidet zwischen Anfragen, die ein Tupel (eine Zeile) zurückliefern, von denen, die mehrere Tupeln (Zeilen) ergeben Die Anfragen können dann als Unterfragen in SELECT, FROM oder WHERE Teil eingesetzt werden

Geschachtelte Anfragen (2) ... in WHERE-Klausel Welche Prüfungen sind besser als durchschnittlich verlaufen? SELECT * FROM prüfen WHERE Note < ( select avg (Note) from prüfen );

Geschachtelte Anfragen (3) ... in SELECT-Klausel Professoren mit deren Lehrbelastung und durchschnittlicher Lehrbelastung SELECT PersNr, Name, sum(SWS) AS Lehrbelastung, ( select avg (sum(SWS)) from Vorlesungen group by gelesenVon) AS Durchschnitt FROM Professoren p, Vorlesungen v WHERE p.PersNr = v.gelesenVon GROUP BY PersNr, Name;

Geschachtelte Anfragen (4) ... in SELECT-Klausel Professoren mit deren Lehrbelastung und durchschnittlicher Lehrbelsatung – korreliert ohne GROUP BY: SELECT PersNr, Name, (select sum (SWS) from Vorlesungen where gelesenVon = p.PersNr) AS Lehrbelastung, (select sum(SWS) / count(DISTINCT gelesenVon) from Vorlesungen) AS Durchschnitt FROM Professoren p

Geschachtelte Anfragen (5) ... in FROM-Klausel „fleißige“ Studenten – die mehr als 2 Vorlesungen hören: SELECT tmp.MatrNr, tmp.Name, tmp.VorlAnzahl FROM (select s.MatrNr, s.Name, count(*) as VorlAnzahl from Studenten s, hoeren h where s.MatrNr=h.MatrNr group by s.MatrNr, s.Name) tmp WHERE tmp.VorlAnzahl > 2;

Vorlesung #5 Ende