Datenmanagement SQL: SELECT-Abfragen I Datenmanagement WS 08/09 Łukasz Lis Beispieldatenbank – ERM Datenmanagement WS 08/09 1 Łukasz Lis Beispieldatenbank – Schema Datenmanagement WS 08/09 2 Łukasz Lis SELECT SELECT select_expr, ... Im SELECT-Teil werden Ergebnisspalten definiert. Konstanten Funktionen Ausdrücke Aliase Datenmanagement WS 08/09 3 Łukasz Lis SELECT FROM SELECT [ALL | DISTINCT] select_expr, ... FROM table_references Der FROM-Teil gibt die zu verwendeten Tabellen an. * (Stern) Gib alle Nutzer aus. Datenmanagement WS 08/09 4 Łukasz Lis SELECT FROM WHERE SELECT [ALL | DISTINCT] select_expr, ... FROM table_references WHERE where_condition Der WHERE-Teil spezifiziert Bedingungen, die alle Ergebnisdatensätze erfüllen müssen. Datenmanagement WS 08/09 5 Łukasz Lis WHERE Einfacher Vergleich (=, <, >, <>, <=, >=) Verknüpfung von Bedingungen mit AND, OR oder NOT BETWEEN LIKE (_ und %) Der IN-Operator in Verbindung mit einer Liste Die Operatoren IS NULL und IS NOT NULL Datenmanagement WS 08/09 6 Łukasz Lis Tabellenverknüpfungen (JOIN) CROSS JOIN (explizit, Komma) INNER JOIN (ON, Komma+WHERE, USING) NATURAL JOIN LEFT (OUTER) JOIN RIGHT JOIN und FULL JOIN Gib alle Rollen mit den zugewiesenen Nutzern aus. Gib Rollen ohne zugewiesene Nutzer aus. Gib alle Informationen im System aus. Datenmanagement WS 08/09 7 Łukasz Lis Datenaggregation COUNT([DISTINCT] expr) COUNT(*) MIN(expr) MAX(expr) SUM(expr) AVG(expr) Ermittelt die Anzahl der gültigen Werte innerhalb einer Gruppe. Wird die Option DISTINCT verwendet, werden gleiche Werte nur einmal gezählt. Ermittelt die Anzahl der Datensätze im Ergebnis. Ermittelt den kleinsten Wert einer Gruppe von Werten. Ermittelt den größten Wert einer Gruppe von Werten. Ermittelt die Summe der Werte einer Gruppe von Werten. Ermittelt das arithmetische Mittel einer Gruppe von Werten. NULL-Werte werden grundsätzlich ignoriert Ausnahme: COUNT(*) Datenmanagement WS 08/09 8 Łukasz Lis Datenaggregation – Beispiele Wann war die letzte Änderung im System? Wann war die letzte Änderung des Dokuments 1? Wie oft wurde das Dokument 1 bereits geändert? Wie oft hat der Nutzer 1 Änderungen vorgenommen? Datenmanagement WS 08/09 9 Łukasz Lis Gruppenbildung (GROUP BY) SELECT [ALL | DISTINCT] select_expr, ... FROM table_references WHERE where_condition GROUP BY {col_name | expr}, ... Als select_expr nur die Spalten, über die gruppiert wird, oder Aggregationsausdrücke. Datenmanagement WS 08/09 10 Łukasz Lis Gruppenbildung – Beispiele Wie viele Zeichen wurden pro Sitzung durchschnittlich geändert? Gib Liste aller Dokumente mit deren Änderungshäufigkeiten aus. Datenmanagement WS 08/09 11 Łukasz Lis Gruppenbedingungen (HAVING) SELECT [ALL | DISTINCT] select_expr, ... FROM table_references WHERE where_condition GROUP BY {col_name | expr}, ... HAVING having_condition HAVING – Gruppenebene WHERE – Datensatzebene Datenmanagement WS 08/09 12 Łukasz Lis Sortieren (ORDER BY) SELECT [ALL | DISTINCT] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr}, ...] [HAVING having_condition] [ORDER BY {col_name | expr} [ASC | DESC], ...] Datenmanagement WS 08/09 13 Łukasz Lis Konzeptionelle Berechnungsreihenfolge 1. FROM: Definiert Ausgangstabellen 2. WHERE: Selektiert nur die Datensätze, welche die Bedingung erfüllen 3. GROUP BY: Gruppiert Datensätze auf Basis gleicher Werte in bestimmten Spalten 4. HAVING: Selektiert nur die Gruppen, die der Bedingung genügen 5. SELECT: Selektiert Spalten 6. ORDER BY: Sortiert Zeilen nach bestimmten Spalten Datenmanagement WS 08/09 14 Łukasz Lis