select - Softwarelabor (SWL)

Werbung
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)
35
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)
36
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)
37
Aggregatfunktionen
§ SQL unterstützt eine Vielzahl von Aggregatfunktionen,
die auf die Werte eines Attributs in mehreren Tupeln
angewendet 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)
38
Aggregatfunktionen
§ Beispiel:
§ MIN(A) = 1
§ MAX(A) = 3
§ AVG(A) = 8 / 4 = 2
§ COUNT(*) = 5
§ COUNT(A) = 4
A
1
2
NULL
2
3
§ COUNT(DISTINCT A) = 3
Datenbanken / Kapitel 4: Structured Query Language (SQL)
39
Aggregatfunktionen
§ Beispiel: Maximale, minimale und durchschnittliche
Semesteranzahl innerhalb Studenten der Physik
1
2
3
4
5
SELECT MAX ( Semester ) ,
MIN ( Semester ) ,
AVG ( Semester )
FROM Studenten
WHERE Fach = ’ Physik ’
Datenbanken / Kapitel 4: Structured Query Language (SQL)
40
Selektionsbedingungen
§ Selektionsbedingungen, in WHERE-Klausel, erlauben
mehr als Vergleich zwischen Attribut und Konstante
§ Vergleichsoperatoren (=, <> oder !=, >, <, >=, <=)
1
2
3
SELECT Vorname , Name
FROM Studenten
WHERE Semester > 10
§ Vergleiche zwischen Attributen
1
2
3
SELECT *
FROM Bestellungen
WHERE Bestelldatum = Lieferdatum
Datenbanken / Kapitel 4: Structured Query Language (SQL)
41
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
1
2
3
SELECT *
FROM Studenten
WHERE Fach != ’ Informatik ’ AND Fach != ’ Physik ’
oder durch Anwendung von De Morgan
1
2
3
SELECT *
FROM Studenten
WHERE NOT ( Fach = ’ Informatik ’ OR Fach = ’ Physik ’)
Datenbanken / Kapitel 4: Structured Query Language (SQL)
42
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
1
2
3
SELECT *
FROM Vorlesungen
WHERE Titel LIKE ’% Grundlagen % ’
wenn auch „Informatikgrundlagen“ gefunden werden soll
1
2
3
SELECT *
FROM Vorlesungen
WHERE LOWER ( Titel ) LIKE ’% grundlagen % ’
Datenbanken / Kapitel 4: Structured Query Language (SQL)
43
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
1
2
3
SELECT *
FROM Studenten
WHERE Vorname IN ( ’ Max ’ , ’ Moritz ’)
§ Die Wertemenge darf auch mittels einer
SQL-Unteranfrage bestimmt werden,
dazu später mehr
Datenbanken / Kapitel 4: Structured Query Language (SQL)
44
Ü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
1
2
3
SELECT *
FROM Professoren
WHERE Fach IS NULL
§ MS SQL Server bietet zudem die Funktion ISNULL(a,b),
welche den Wert b annimmt, wenn a NULL ist und
andernfalls den Wert a belässt
§ SQLite kennt eine entsprechende Funktion IFNULL(a,b)
Datenbanken / Kapitel 4: Structured Query Language (SQL)
45
4.3 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)
46
Kartesisches Produkt
§ Kartesisches Produkt zweier Tabellen lässt sich durch
deren Nennung in der FROM-Klausel oder durch
Verwendung des CROSS JOIN Kommandos ermitteln
§ Beispiel: Kombinationen von Studenten und Professoren
1
2
SELECT *
FROM Studenten , Professoren
oder
1
2
SELECT *
FROM Studenten CROSS JOIN Professoren
Datenbanken / Kapitel 4: Structured Query Language (SQL)
47
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 durch
Verwendung des NATURAL JOIN Kommandos ermitteln
§ Beispiel: Vorlesungen mit zugehörigen Professoren
SELECT *
FROM Vorlesungen , Professoren
WHERE Vorlesungen . PersNr = Professoren . PersNr
1
2
3
oder
1
2
SELECT *
FROM Vorlesungen NATURAL JOIN Professoren
Datenbanken / Kapitel 4: Structured Query Language (SQL)
48
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 durch
Verwendung des JOIN ON Kommandos ermitteln
§ Beispiel: Professoren und Studenten gleichen Namens
1
2
3
SELECT *
FROM Professoren , Studenten
WHERE Professoren . Name = Studenten . Name
oder
1
2
3
4
SELECT
FROM
JOIN
ON
*
Professoren
Studenten
Professoren . Name = Studenten . Name
Datenbanken / Kapitel 4: Structured Query Language (SQL)
49
Mengenoperationen
§ Die Kommandos UNION, INTERSECT und EXCEPT
bilden die Mengenoperationen , ∩ und ab und
dürfen nur auf Tabellen mit kompatiblen Schemata
angewendet werden
§ Beispiel: Namen, die nur bei Studenten, aber nicht bei
Professoren vorkommen
1
2
3
4
5
SELECT
FROM
EXCEPT
SELECT
FROM
Datenbanken / Kapitel 4: Structured Query Language (SQL)
Name
Studenten
Name
Professoren
50
Umbenennung
§ Taucht die gleiche Tabelle mehrfach in einem SQL
Kommando auf, können die einzelnen Auftreten
benannt werden
§ Beispiel: Paare von Studenten mit gleichem Fach
1
2
3
SELECT *
FROM Studenten s1 , Studenten s2
WHERE s1 . Fach = s2 . Fach
Datenbanken / Kapitel 4: Structured Query Language (SQL)
51
4.4 Datenmanipulation
§ Data Manipulation Language (DML) stellt Befehle zum
Einfügen, Ändern und Löschen von Tupeln bereit
§ RDBMS überprüft beim Einfügen, Ändern und Löschen
bestehende Integritätsbedingungen (z.B. definiert durch
Primärschlüssel oder Fremdschlüssel) und
verweigert bei Verletzung die Ausführung
Datenbanken / Kapitel 4: Structured Query Language (SQL)
52
Einfügen von Daten
§ Tupel lassen sich mittels des INSERT INTO Kommandos
in eine Tabelle einfügen
§ Beispiel: Füge Carla Columna als Professorin
für Literatur mit PersNr 198606 hinzu
1
2
INSERT INTO Professoren
VALUES (198606 , ’ Carla ’ , ’ Columna ’ , ’ Literatur ’)
mit Reihenfolge der Attribute gemäß Schema, alternativ
1
2
INSERT INTO Professoren ( Name , Fach , Vorname , PersNr )
VALUES ( ’ Columna ’ , ’ Literatur ’ , ’ Carla ’ , 198606)
mit Angabe der Attributreihenfolge
Datenbanken / Kapitel 4: Structured Query Language (SQL)
53
Ändern von Daten
§ Bereits existierende Tupel lassen sich mittels des UPDATE
Kommandos verändern; dieses hat folgende Form
1
2
3
UPDATE < Tabelle >
SET < Attribut > = < Wert > , ...
WHERE < Bedingungen >
§ Beispiel: Ändere Name von Professor 198606 nach Cole
1
2
3
UPDATE Professoren
SET Name = ’ Cole ’
WHERE PersNr = 198606
§ Beispiel: Erhöhe Semester aller Studenten
1
2
UPDATE Studenten
SET Semester = Semester + 1
Datenbanken / Kapitel 4: Structured Query Language (SQL)
54
Löschen von Daten
§ Bereits existierende Tupel lassen sich mittels des DELETE
Kommandos löschen; dies hat folgende Form
1
2
DELETE FROM < Tabelle >
WHERE < Bedingungen >
§ Beispiel: Lösche Studenten der Datenverarbeitung
1
2
DELETE FROM Studenten
WHERE Fach = ’ Da tenver arbeit ung ’
Datenbanken / Kapitel 4: Structured Query Language (SQL)
55
4.5 SQLite
§ Im Softwarelabor verwenden wir MS SQL Server; zum
Üben zu Hause stellen wir unsere Beispieldatenbank
für SQLite zur Verfügung
§ Datenbanken und Software für Windows, Mac und Linux
stehen zum Download auf der Vorlesungswebseite bereit
Datenbanken / Kapitel 4: Structured Query Language (SQL)
56
SQLite Kommandos
§ Starten von SQLite mit der Beispieldatenbank
§ Mac / Linux: ./sqlite3 dbs-versandhandel.sqlite
§ Windows: ./sqlite3.exe dbs-versandhandel.sqlite
§ Anzeigen verfügbarer Tabellen
§ .tables
§ Anzeigen des Schemas einer Tabelle
§ .schema <Tabelle>
Datenbanken / Kapitel 4: Structured Query Language (SQL)
57
SQLite Kommandos
§ Anzeige von Attributnamen an-/ausschalten
§ .headers on|off
§ Trennzeichen für Spalten ändern
§ .separator ‘|‘ (trennt Spalten durch Vertikalstrich)
§ Hilfe anzeigen
§ .help
§ Beenden
§ .quit
Datenbanken / Kapitel 4: Structured Query Language (SQL)
58
SQLite Kommandos
§ SQL Kommandos in SQLite durch Semikolon beendet
§ SELECT * FROM Kunden;
Datenbanken / Kapitel 4: Structured Query Language (SQL)
59
Anfrageübung Versandhandel
§ Welche Artikel sind gemäß Ihrer Beschreibung ein Bausatz
§ Welche Bestellungen sind von Kunden namens Becker
§ Welche Kunden namens Gates wohnen nicht in Homburg
§ Wieviele Artikel haben Kunden namens Schmidt bestellt
§ Welche Paare von Artikeln wurde je zusammen bestellt
Datenbanken / Kapitel 4: Structured Query Language (SQL)
60
Anfrageübung Versandhandel
§ Welche Artikel sind gemäß Ihrer Beschreibung ein Bausatz
SELECT *
FROM Artikel
WHERE LOWER ( Bezeichnung ) LIKE ’% bausatz % ’
1
2
3
§ Welche Bestellungen sind von Kunden namens Becker
1
2
3
4
SELECT
FROM
WHERE
AND
1
2
3
*
Bestellungen , Kunden
Bestellungen . Kunden_Nr = Kunden . Kunden_Nr
Kunden . Name = ’ Becker ’
SELECT *
FROM Bestellungen NATURAL JOIN Kunden
WHERE Kunden . Name = ’ Becker ’
Datenbanken / Kapitel 4: Structured Query Language (SQL)
61
Anfrageübung Versandhandel
§ Welche Kunden namens Gates wohnen nicht in Homburg
1
2
3
SELECT *
FROM Kunden
WHERE Name = ’ Gates ’ AND Wohnort <> ’ Homburg ’
§ Wieviele Artikel haben Kunden namens Schmidt bestellt
1
2
3
4
5
SELECT SUM ( Anzahl )
FROM Bestellpositionen , Bestellungen , Kunden
WHERE Bestellpositionen . Bestell_Nr = Bestellungen . Bestell_Nr
AND Bestellungen . Kunden_Nr = Kunden . Kunden_Nr
AND Kunden . Name = ’ Schmidt ’
Datenbanken / Kapitel 4: Structured Query Language (SQL)
62
Anfrageübung Versandhandel
§ Welche Paare von Artikeln wurden je zusammen bestellt
1
2
3
4
5
6
7
8
9
SELECT DISTINCT a1 . Artikel_Nr , a2 . Artikel_Nr
FROM Artikel a1 ,
Bestellposition en b1 ,
Bestellposition en b2 ,
Artikel a2
WHERE a1 . Artikel_Nr = b1 . Artikel_Nr
AND b1 . Bestell_Nr = b2 . Bestell_Nr
AND b2 . Artikel_Nr = a2 . Artikel_Nr
AND a1 . Artikel_Nr < a2 . Artikel_Nr
Datenbanken / Kapitel 4: Structured Query Language (SQL)
63
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)
§ Data Manipulation Language (DML) zum Einfügen,
Ändern und Löschen von Tupeln in Tabellen
§ SQLite als RDBMS zum Üben zu Hause
Datenbanken / Kapitel 4: Structured Query Language (SQL)
64
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)
65
Herunterladen