SQL Zusammenfassung
DATENBANKSYSTEME FÜR HÖRER ANDERER FACHRICHTUNGEN
SQL-Zusammenfassung
Gerüst einer SQL-Anfrage
• Duplikate mit DISTINCT eliminieren (hoher
Rechenaufwand!)
• Reihenfolge der Statements in der Query
muss eingehalten werden
• Ziffern geben Reihenfolge der
Abarbeitung an
SQL-Zusammenfassung
Where-Klausel

Prädikate kombinierbar (AND, OR, NOT)

Einsatz von Vergleichsoperatoren

Strings müssen in einfachen Anführungszeichen stehen

Liefert nur Tupel, für die die Bedingung gleich true ist

Suche mit Platzhaltern (Wildcards):


„_“  beliebiges Zeichen + LIKE

„%“  beliebige Zeichenkette + LIKE
Beispiel:
SELECT * FROM Student WHERE Name LIKE ‚K%‘ AND Semster > 9;
SQL-Zusammenfassung
NULL-Werte



Repräsentieren Werte, die

unbekannt,

nicht verfügbar oder

nicht anwendbar sind
SQL hat eine dreiwertige Logik

true

unknown  bei AND-Verknüpfung gesamte Bedingung unknown

false
In Gruppierung als eigene Gruppe dargestellt
SQL-Zusammenfassung
Anfragen über mehrere Relationen

Kreuzprodukt (wenig sinnvoll)

Joins (stehen in der WHERE-Klausel, bevorzugte Variante)

Namenskonflikte auflösen

Beispiel:
SELECT s.Name, v.Titel
FROM Studenten s, hoeren h, Vorlesungen v
WHERE s.MatrNr = h.MatrNr AND h.VorlNr = v.VorlNr
SQL-Zusammenfassung
Mengenoperationen

Vereinigung UNION (Duplikate werden automatisch eliminiert!)

Schnitt INTERSECT

Differenz EXCEPT

Voraussetzung: Gleiches Schema der verknüpften Relationen!

Beispiel:
(SELECT Name FROM Assistenten) UNION
(SELECT Name FROM Professoren)
SQL-Zusammenfassung
Sortierung

Sortieren des Ausgabetupel über ORDER BY

Aufsteigend (ASC) – Defaultwert

Absteigend (DESC)
SQL-Zusammenfassung
Geschachtelte Anfragen

Mehrere SELECT-Statements in einer Anfrage

Inneres Anfrageergebnis wird in äußerer Anfrage verwendet

Zwei Arten geschachtelter Anfragen

Korreliert (Unteranfrage bezieht sich auf äußere Anfrage)

Unkorreliert (Unteranfrage bezieht sich nur auf „eigene“ Attribute)

Unkorrelierte Anfragen sind effizienter (Unteranfrage wird nur einmal ausgewertet)

Beispiele:
SELECT p.Name FROM Professoren p WHERE NOT EXISTS(SELECT * FROM Vorlesungen
v WHERE v.gelesenVon = p.PersNr);
SQL-Zusammenfassung
Aggregatfunktionen und Gruppierung

Durchschnitt AVG(*)

Maximum MAX(*)

Minimum MIN(*)

Summe SUM(*)

Anzahl COUNT(*)

Alle in der SELECT-Klausel gelisteten Attribute müssen auch in der GROUP BY-Klausel
stehen!

Beispiel:
SELECT gelesenVon, Name, SUM(SWS) FROM Vorlesungen, Professoren WHERE
gelesenVon = PersNr AND Rang = `C4` GROUP BY gelesenVon, Name HAVING
AVG(SWS) >= 3;
SQL-Zusammenfassung
Temporäre Tabellen

Verwendung einer Ergebnismenge aus einer Unteranfrage

Umbenennung dieser in eine „temporäre Tabelle“

Beispiel:
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
HAVING COUNT(*) > 2) tmp;
SQL-Zusammenfassung
Joins

Inner join

Left, right oder full outer join

Beispiel:
SELECT p.PersNR,p.Name,f.PersNr from Professoren p, prüfen f left outer join on
p.PersNr=f.PersNR
SQL-Zusammenfassung
Veränderung am Datenbestand

Insert into zum Einfügen von Tupeln durch Anfrage

Bsp: INSERT INTO hören SELECT MatrNr, VorlNr FROM Stundenten, Vorlesungen
WHERE Titel=‚Logik‘

Import zum Einfügen von Tupeln aus Dateien

Delete und Update zum Löschen und Verändern von Datensätzen (nur Inhalt)

DROP und ALTER zum Verändern des Schemas (Löschen ganzer Tabellen bzw.
Verändern von Spalten)
SQL-Zusammenfassung
Sichten

Oft verwendet, um Anfragen übersichtlicher zu gestalten

Stellen eine Art „virtuelle Relation“ dar

Für den Datenschutz und Statistik verwendet

spart Speicherplatz, kostet Rechenzeit im vergleich zu CREATE TABLE

Bsp:
CREATE VIEW prüfenSicht AS SELECT MatrNr, VorlNr, PersNr FROM prüfen
SQL-Zusammenfassung
Webressource

http://www.w3schools.com/sql/