Geodatenbanken SQL Q Ad i O t Adrian Ostermann, Pascal Offermann P l Off Einführung in SQL Einführung in SQL • Was ist Was ist SQL? • SQL steht für Structured Query Language • Datenbanksprache zur Definition von Datenstrukturen (DDL) in relationalen Datenbanken b k • Was kann SQL? • Befehle Befehle zur Datenmanipulation (Ändern, Einfügen, Löschen) und lesendem zur Datenmanipulation (Ändern Einfügen Löschen) und lesendem Zugriff (DML) • Abfragen aus einer Datenbank (DRL) • Befehle für die Rechteverwaltung und Transaktionskontrolle (DCL) Befehle für die Rechteverwaltung und Transaktionskontrolle (DCL) • Wichtige Befehle • CREATE TABLE, DROP TABLE, INSERT, SELECT, UPDATE, DELETE Struktur des SELECT Befehls Struktur des SELECT ‐ • Der select‐Befehl hat im Wesentlichen die Struktur : D l t B f hl h t i W tli h di St kt select ... from ... where ... group by ... b having ... y order by ... Auflistung von Attributen oder Ausdrücken mit Attributen und Funktionen Auflistung der beteiligten Tabellen Auswahlbedingung über die Datensätze Z Zusammenfassung der Datensätze in Gruppen f d D t ät i G Auswahlbedingung über die Gruppe Attribute oder Ausdrücke für die Ausgabesortierung g g JOIN Funktionen in SQL JOIN Funktionen in SQL • Mit „Joins“ lassen sich die Spalten verschiedener Tabellen über den Mit J i “ l i h di S lt hi d T b ll üb d PRIMARY KEY verknüpfen: INNER JOIN: Gibt INNER JOIN: Gibt alle Zeilen zweier Tabellen wieder, wenn wieder, wenn mind. Eine mind. Eine Übereinstimmung besteht LEFT JOIN: Gibt alle Zeilen der ersten Tabelle wieder und die zugehörigen aus der zweiten Tabelle der zweiten RIGHT JOIN: Gibt alle Zeilen der zweiten Tabelle wieder und die zugehörigen aus der ersten Tabelle FULL JOIN: Gibt alle Zeilen wieder, wenn wenigstens eine Übereinstimmung Ü besteht SQL Funktionen SQL Funktionen • SQL aggregate functions geben SQL t f ti b einen i W t ü k d Wert zurück, der aus d den Spaltenwerten berechnet wird • Wichtige Funktionen: AVG() ‐ Returns the average value COUNT() ‐ Returns the number of rows FIRST() ‐ Returns the first value LAST() ‐ Returns the last value MAX() ‐ MAX() Returns the largest value Returns the largest value MIN() ‐ Returns the smallest value SUM() ‐ Returns the sum Beispiel: Abfrage Beispiel: Abfrage • Gib alle Professoren mit ihren Personalnummern und der Anzahl der Gib ll P f it ih P l d d A hl d Vorlesungen, die sie lesen, aus – aufsteigend sortiert nach der Anzahl g der Vorlesungen. Select p.Name, p.PersNr, count(v.Titel) as Anzahl FROM Professoren p LEFT JOIN Vorlesungen v Professoren p LEFT JOIN Vorlesungen v ON p.PersNr = v.GelesenVon Group by p.Name, p.PersNr Group by p Name p PersNr Order by Anzahl Unterabfragen / Verschachtelte Abfrage Unterabfragen / Verschachtelte Abfrage • Zwei verschiedene Arten von Unteranfragen: korrelierte und Z i hi d At U t f k li t d unkorrelierte • unkorreliert: Unteranfrage bezieht sich nur auf unkorreliert: Unteranfrage bezieht sich nur auf "eigene" eigene Attribute Attribute Unteranfrage wird einmal ausgewertet für jedes Tupel der äußeren Anfrage wird geprüft, ob die MatrNr im Ergebnis der Unteranfrage vorkommt • korreliert: Unteranfrage referenziert auch Attribute der äußeren Anfrage Für jedes Tupel Fü j d T l der äußeren Anfrage hat innere Anfrage verschiedene Werte d ä ß A f h i A f hi d W das exists‐Prädikat wahr, wenn exists ist die Unteranfrage mind. ein Tupel enthält Beispiel: Unteranfrage Beispiel: Unteranfrage Unkorreliert: Korreliert: select s.* s* from Studenten s where s.GebDatum < (select max (p.GebDatum) from Professoren p); select s.* s* from Studenten s where exists (select p.* from Professoren p where p.GebDatum > s.GebDatum);