19
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)

Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 2: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 3: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 4: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 5: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 6: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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 ’

Page 7: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 8: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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 ’)

Page 9: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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 %’

Page 10: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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 ’)

Page 11: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 12: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 13: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 14: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 15: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 16: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 17: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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

Page 18: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)

Page 19: Rückblick - swl.htwsaar.de · 39 Rückblick § Structured Query Language(SQL) als standardisierte Anfragesprache für relationale Datenbanken § Data Definition Languagezur Schemadefinition

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)