PPT

Werbung
Ü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
Herunterladen