Übung Datenbanksysteme SQL-Anfragen (1) 4.12.2002 Übung Datenbanksysteme WS 2002/2003 14.02.2017 Klausurinfos • Termin: 11.12.2002, 15:15 • Dauer: 45 Minuten • Hilfsmittel: – Bücher, Mitschriften, Wörterbücher OK – Notebooks, Handys, Taschenrechner NICHT • Stoffumfang: einschließlich dieser Übung Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Grundlagen (Abfragen) • SQL: Standardabfragesprache für rel. DBMS • Angewandtes Tupelkalkül • Erweiterungen – Syntaktisch – Ausdrucksmächtigkeit • Eingabe Tabellen • Ausgabe Tabellen Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Anfragen - Syntax SELECT Spaltenname1, Spaltenname2 FROM Tabelle1, Tabelle2 Festlegung der anzeigten Spalten (=Projektion) Festlegung aller Tabellen WHERE Bedingung1, Bedingung2 Selektions- und Joinbedingungen => Weitere Ausdrücke später Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Anfragen: Anmerkugen • Reihenfolge der Ergebnisspalten durch Select festgelegt • Ergebnisspalten können anders benannt werden: Spaltenname as Ergebnisname • Tabellennamen können direkt verwendet werden => FROM Tabellenname oder • Tabellen können neue Namen bekommen => Tabellename NeuerName • Bedingungen mit AND oder OR verknüpfen • Beispiele: Aufgabe 1, a) – g) Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL - Sortierung • Ergebnisse sollen sortiert vorliegen • Widerspruch zum klassischen relationalen Modell: Mengen sind nicht sortiert • Syntax: SELECT * FROM Tabelle ORDER BY Spaltenname (DESC) Beispiel: Stationen in absteigender alphabetischer (lexikalischer) Sortierung SELECT * FROM Station ORDER BY Stationsname DESC Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Aggregation • Aggregation: Zusammenfassung von Werten nach bestimmten Kriterium • In SQL – – – – – MIN MAX SUM COUNT (Anzahl) AVG (Durchschnitt) • Anwendung auf Spalten oder ganze Tabelle • Duplikatwerte werden mitgezählt ! • Beispiel: Aufgabe 1h) Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Anfragen: Gruppierung (1) • Zusammenfassung von Tupeln nach bestimmten Kriterium => alle Tupel mit gleichem Wert “landen im selben Topf” • Meist mit Aggregatfunktionen Syntax: SELECT Spalte1, Agg(Spalte2) FROM Tabelle GROUP BY Spalte1 Erlaubte Ergebnisspalten – Gruppierungsspalte – Aggregatfunktionen • Aggregation angewandt auf einzelne Gruppen • Beispiel: Aufgabe 1i) Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Anfragen: Gruppierung (2) Weiteres Problem: Prädikate auf gruppierten Daten: „Finden sie die Wagennummern von Wagen mit weniger als 5 Plätzen“ 1i) gibt alle Wagen mit allen Plätzen Lösung: GROUP BY Spaltenname HAVING Einschränkung Beispiel: Aufgabe 1j) Gruppierung kombinierbar mit Joins, Sortierung usw. Übung Datenbanksysteme WS 2002/2003 14.02.2017 SQL-Anfragen: Anmerkugen (2) Selfjoins über Tabellenbenennung Siehe Aufgabe 2b) Beobachtung: Projektion erzwingt keine Duplikatelimination Warum ? Performancegewinn ! (z.B. Sortieren vermeiden) Lösungsmöglichkeit: SELECT DISTINCT Nach der Klausur: Subqueries, Quantifizierung Übung Datenbanksysteme WS 2002/2003 14.02.2017 Alternativschreibweise für Joins Bekannte Schreibweise ... FROM Tabelle1 t1, Tabelle2 t2 WHERE t1.a=t2.b Neu: FROM Tabelle1 t1 <joinexp> Tabelle t2 on t1.a=t2.b Joinexp: – – – – cross join natural Join (inner) Join Left, right, full outer join In DB2 nur inner join, outer joins Übung Datenbanksysteme WS 2002/2003 14.02.2017