Upload
others
View
22
Download
0
Embed Size (px)
Citation preview
39
Rückblick§ Structured Query Language (SQL) als standardisierte
Anfragesprache für relationale Datenbanken
§ Data Definition Language zur Schemadefinition(z.B. CREATE TABLE zum Anlegen von Tabellen)
§ Data Query Language zum Formulieren von Anfragen(SELECT ... FROM ... WHERE ... ORDER BY ...)
Datenbanken / Kapitel 4: Structured Query Language (SQL)
40
Mathematische Funktionen§ SQL unterstützt die mathematischen Operatoren (+, *, -, /)
und eine Vielzahl mathematischer Funktionen, z.B.
§ ABS(A): Betrag
§ SIGN(A): Vorzeichen
§ SQRT(A): Quadratwurzel
§ FLOOR(A): Abrunden auf ganze Zahl
§ CEIL(A): Aufrunden auf ganze Zahl
§ MAX(A,B): Maximum der Attribute A und B
§ MIN(A,B): Minimum der Attribute A und B
§ …
Datenbanken / Kapitel 4: Structured Query Language (SQL)
41
Sonstige Funktionen§ SQL unterstützt zahlreiche Funktionen für
nichtnumerische Datentypen, etwa für Zeichenketten
§ LOWER(A): Zeichenkette in Kleinbuchstaben
§ UPPER(A): Zeichenkette in Großbuchstaben
§ LENGTH(A): Länge der Zeichenkette
§ SUBSTRING(A, start, end): Ausschnitt der Zeichenkette
§ TRIM(A): Zeichenkette ohne umgebende Leerzeichen
Datenbanken / Kapitel 4: Structured Query Language (SQL)
42
Aggregatfunktionen§ SQL unterstützt eine Vielzahl von Aggregatfunktionen,
die auf die Werte eines Attributs in mehreren Tupelnangewendet werden können, z.B.:
§ MIN(A): minimaler Wert für Attribut A
§ MAX(A): maximaler Wert für A
§ AVG(A): durchschnittlicher Wert für A
§ SUM(A): Summe der Werte für A
§ COUNT(*): Anzahl Tupel
§ COUNT(A): Anzahl Tupel mit Wert ungleich NULL für A
§ COUNT(DISTINCT A): Anzahl Werte ungleich NULL für A
Datenbanken / Kapitel 4: Structured Query Language (SQL)
43
Aggregatfunktionen§ Beispiel:
§ MIN(A) = 1
§ MAX(A) = 3
§ AVG(A) = 8 / 4 = 2
§ COUNT(*) = 5
§ COUNT(A) = 4
§ COUNT(DISTINCT A) = 3
Datenbanken / Kapitel 4: Structured Query Language (SQL)
A
12NULL23
44
Aggregatfunktionen§ Beispiel: Maximale, minimale und durchschnittliche
Semesteranzahl innerhalb Studenten der Physik
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT MAX( Semester ),2 MIN( Semester ),3 AVG( Semester )4 FROM Studenten5 WHERE Fach = ’Physik ’
45
Selektionsbedingungen§ Selektionsbedingungen, in WHERE-Klausel, erlauben
mehr als Vergleich zwischen Attribut und Konstante
§ Vergleichsoperatoren (=, <> oder !=, >, <, >=, <=)
§ Vergleiche zwischen Attributen
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT Vorname , Name2 FROM Studenten3 WHERE Semester > 10
1 SELECT *2 FROM Bestellungen3 WHERE Bestelldatum = Lieferdatum
46
Selektionsbedingungen§ Boole‘sche Operatoren (NOT, OR, AND) mit der Rangfolge NOT vor AND vor OR und ggf. Klammerung
§ Beispiel: Studenten weder von Informatik noch Physik
oder durch Anwendung von De Morgan
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Studenten3 WHERE Fach != ’Informatik ’ AND Fach != ’Physik ’
1 SELECT *2 FROM Studenten3 WHERE NOT (Fach = ’Informatik ’ OR Fach = ’Physik ’)
47
Mustervergleiche in Zeichenketten§ Textuelle Attribute kann man mittels LIKE gegen ein
Muster vergleichen; hierbei dient % als Platzhalter (wildcard) und repräsentiert kein oder mehrere Zeichen
§ Beispiel: Vorlesungen mit „Grundlagen“ im Titel
wenn auch „Informatikgrundlagen“ gefunden werden soll
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Vorlesungen3 WHERE Titel LIKE ’% Grundlagen %’
1 SELECT *2 FROM Vorlesungen3 WHERE LOWER ( Titel ) LIKE ’% grundlagen %’
48
Wertemengen§ Mittels des Kommandos IN kann überprüft werden, ob der
Wert eines Attributs in einer gegebenen Wertemenge liegt
§ Beispiel: Studenten mit Vornamen Max oder Moritz
§ Die Wertemenge darf auch mittels einerSQL-Unteranfrage bestimmt werden,dazu später mehr
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Studenten3 WHERE Vorname IN (’Max ’, ’Moritz ’)
49
Überprüfung auf NULL-Werte§ Mittels der Kommandos IS NULL und IS NOT NULL kann
überprüft werden, ob der Wert eines Attributs NULL ist
§ Beispiel: Professoren mit unbekanntem Fach
§ MS SQL Server bietet zudem die Funktion ISNULL(a,b),welche den Wert b annimmt, wenn a NULL ist undandernfalls den Wert a belässt
§ SQLite kennt eine entsprechende Funktion IFNULL(a,b)
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Professoren3 WHERE Fach IS NULL
50
4.4 Anfragen über mehrere Tabellen§ SQL unterstützt verschiedene Kommandos, um zwei oder
mehr Tabellen miteinander zu verknüpfen; hierzu werden mehrere Tabellen in der FROM-Klausel erwähnt und Joinprädikate in der WHERE-Klausel angegeben
§ SQL kennt zudem eine alternative Syntax, die dazu dient, Joinprädikate von Selektionsprädikaten zu trennen
Datenbanken / Kapitel 4: Structured Query Language (SQL)
51
Kartesisches Produkt§ Kartesisches Produkt zweier Tabellen lässt sich durch
deren Nennung in der FROM-Klausel oder durchVerwendung des CROSS JOIN Kommandos ermitteln
§ Beispiel: Kombinationen von Studenten und Professoren
oder
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Studenten , Professoren
1 SELECT *2 FROM Studenten CROSS JOIN Professoren
52
Natürlicher Join§ Natürlicher Join zweier Tabellen lässt sich durch deren
Nennung in der FROM-Klausel und Angabe der gemeinsamen Attribute in der WHERE-Klausel oder durchVerwendung des NATURAL JOIN Kommandos ermitteln
§ Beispiel: Vorlesungen mit zugehörigen Professoren
oder
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Vorlesungen , Professoren3 WHERE Vorlesungen . PersNr = Professoren . PersNr
1 SELECT *2 FROM Vorlesungen NATURAL JOIN Professoren
53
Allgemeiner Join§ Allgemeiner Join zweier Tabellen lässt sich durch deren
Nennung in der FROM-Klausel und Angabe des Joinprädikats in der WHERE-Klausel oder durchVerwendung des JOIN ON Kommandos ermitteln
§ Beispiel: Professoren und Studenten gleichen Namens
oder
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Professoren , Studenten3 WHERE Professoren .Name = Studenten .Name
1 SELECT *2 FROM Professoren3 JOIN Studenten4 ON Professoren .Name = Studenten .Name
54
Mengenoperationen§ Die Kommandos UNION, INTERSECT und EXCEPT
bilden die Mengenoperationen ∪, ∩ und ∖ ab unddürfen nur auf Tabellen mit kompatiblen Schemataangewendet werden
§ Beispiel: Namen, die nur bei Studenten, aber nicht bei Professoren vorkommen
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT Name2 FROM Studenten3 EXCEPT
4 SELECT Name5 FROM Professoren
55
Umbenennung§ Taucht die gleiche Tabelle mehrfach in einem SQL
Kommando auf, können die einzelnen Auftretenbenannt werden
§ Beispiel: Paare von Studenten mit gleichem Fach
Datenbanken / Kapitel 4: Structured Query Language (SQL)
1 SELECT *2 FROM Studenten s1 , Studenten s23 WHERE s1.Fach = s2.Fach
56
Zusammenfassung
§ SQL bietet viele Möglichkeiten zur Anfrageformulierung
§ mathematische Funktionen (z.B. ABS(A) und SIGN(A))
§ Aggregatfunktionen (z.B. MIN(A) und SUM(A))
§ Boole‘sche Operatoren (AND, OR, EXCEPT)
§ Verknüpfungen von mehreren Tabellen (JOINs)
Datenbanken / Kapitel 4: Structured Query Language (SQL)
57
Literatur[1] A. Kemper und A. Eickler: Datenbanksysteme – Eine
Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 4)
[2] G. Saake, K.-U. Sattler und A. Heuer:Datenbanken - Konzepte und Sprachen,mitp Professional, 2013 (Kapitel 7)
Datenbanken / Kapitel 4: Structured Query Language (SQL)