SQL - BFH-TI Staff - Berner Fachhochschule

Werbung
Datenbanksprache
(SQL)
Contents
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
Chapter 5
1 SQL Standard
Datenbanksprache (SQL)
SQL Standard
2 SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
Lecture Datenbanken
18.03.2014
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
Pierre Fierz
9 Insert-, Update- und Delete-Operationen
Berner Fachhochschule
Technik und Informatik
5.1
Die Lernziele dieses Kapitels.
Datenbanksprache
(SQL)
5.2
Outline
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
SQL Standard
2 SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
1
Codd-Vollständigkeit von SQL
2
Syntax der Data Manipulation Language (DML) von SQL
3
Formulieren von korrekten SQL-Queries
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.3
5.4
Datenbanksprache
(SQL)
SQL Standards
Outline
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
Jahr
Name
Kommentar
SQL Standard
1986
1989
SQL-86
SQL-89
SQL-Query Syntax
1992
SQL-92
1999
SQL:1999
Erster ANSI Standard
minor Revision herausgegeben als FIPS 127-1 (Federal
Information Processing Standards)
Major revision (ISO 9075).
SQL-92 ist auch als SQL2 bekannt.
Neu sind: rekursive Queries, objektorientierte Konzepte,
reguläre Ausdücke, Triggers, prozedurale Elemente,
nicht skalare Typen.
SQL:1999 ist auch als SQL3 bekannt.
Neu sind: XML Support, Sequenz Generatoren, Identity
Felder
XML Erweiterungen insbesondere die Möglichkeit
XQuery im SQL-Code zu verwenden.
INSTEAD OF Triggers, TRUNCATE Statement
2003
SQL:2003
2006
SQL:2006
2008
SQL:2008
2 SQL-Query Syntax
Relationale
Operatoren
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.5
SELECT Statement
Datenbanksprache
(SQL)
5.6
SELECT Statement (2)
Pierre Fierz
SQL Syntax (SELECT)
Pierre Fierz
SQL Syntax (SELECT cont.)
SQL Standard
SQL-Query Syntax
<selection> ::= <query> [UNION|INTERSECT|EXCEPT
<query>]...
[ORDER BY <attribut-list>]
<query>
::= SELECT [ALL|DISTINCT] <sel-item>
[,<sel-item>]...
FROM <tableExpr> [[AS] <alias>]
[,<tableExpr> [[AS] <alias>]]...
[WHERE <conditional-expression>]
[GROUP BY <attribut-list>
[HAVING <conditional-expression>]]
Datenbanksprache
(SQL)
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.7
<sel-item> ::= [<table-name>|<alias>].<attribut-name>
[[AS] <alias>]
| {<table-name>|<alias>}.*
|*
| <sql-expression>
<tableExpr>::= <joinExpr>
| <nonjoinExpr>
<nonjoinExpr>
::= <table-name>
| (<selection>) [AS] <alias>
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.8
SELECT Statement (3)
Datenbanksprache
(SQL)
Datenbanksprache
(SQL)
Outline
Pierre Fierz
Pierre Fierz
1 SQL Standard
SQL Standard
• Die SELECT-Klausel bestimmt das Relationenschema des
Resultats. Die einzelnen Felder sind entweder:
• Attribute aus den Tabellen in der FROM-Klausel
• Berechnungen mit Attributen und Konstanten.
• Die FROM-Klausel definiert die Inputtabelle.
• Es wird das Kartesische Produkt der einelnen “tableExpr”
gebildet.
• Die WHERE-Klausel ist ein Filter, der die gwünschten
Tupel aus der Inputtabelle selektiert.
SQL Standard
2 SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
SQL-Query Syntax
Relationale
Operatoren
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
5 Verbundoperationen ab SQL-92
Subqueries
Subqueries
Weitere Klauseln
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.9
Realtionale Operatoren
Datenbanksprache
(SQL)
5.10
Datenbanksprache
(SQL)
Die Selektion
Pierre Fierz
Pierre Fierz
• Für die Selektion wird die WHERE-Klausel verwendet.
SQL Standard
• SQL ist eine Codd vollständige Sprache
• Wir müssen zeigen, dass alle Operationen der
Relationenalgebra in SQL existieren also
•
•
•
•
•
Selektion
Projektion
Natürlicher Verbund
Mengenoperationen
Umbennenung
• SQL erlaubt aber noch mehr Operationen unter anderem
SQL-Query Syntax
Relationale
Operatoren
Alle geforderten Vergleichoperationen sind vorhanden
SQL-Query Syntax
Relationale
Operatoren
Selektion von Mitarbeitern
Verbundoperationen in
SQL-89
SQL Standard
• Wir wollen alle Mitarbeiter selektieren, die Meier oder
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Schmid heissen und in Bern wohnen
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SELECT *
FROM
Mitarbeiter
WHERE (Name = ’Meier’ OR
Ort = ’Bern’
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Name = ’Schmid’) AND
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Insert-, Update- und
Delete-Operationen
mNr
4
5
6
9
auch Rechenoperationen.
5.11
Subqueries
Name
Schmid
Meier
Meier
Meier
AhvNr
37828
61526
97923
82828
Plz
3006
3006
3006
3012
Ort
Bern
Bern
Bern
Bern
Geschlecht
M
M
W
M
Geburtsdatum
1949-02-24
1920-12-22
1924-03-11
1950-04-29
aNr
1
1
1
1
5.12
Datenbanksprache
(SQL)
Die Projektion
Datenbanksprache
(SQL)
Der natürliche Verbund
Pierre Fierz
Pierre Fierz
• Für die (reine) Projektion wird die SELECT-Klausel
• Der Natürliche Verbund kann mit dem Befehl NATURAL
JOIN in der FROM-Klausel realisiert werden.
verwendet
• Damit es eine richtige Projektion ergibt muss das Keywort
DISTINCT verwendet werden.
• Die WHERE-Klausel kann weggelassen werden.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Beispiel Projektion
Verbundoperationen
ab SQL-92
• Wir wollen alle Paare von Postleitzahlen und Orte der
Mitarbeiter bestimmen.
SELECT DISTINCT
FROM
SQL Standard
Plz, Ort
Mitarbeiter
Plz
4007
3006
3012
3210
1012
1210
3601
8403
8012
Mitarbeiter einer Abteilung
SQL-Query Syntax
• Wir möchten die Namen aller Mitarbeiter der Abteilung
"A" bestimmen.
• In diesem Beispiel wird der natürliche Verbund mit einer
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Selektion und einer Projektion verbunden.
Operatoren und
Funktionen
Subqueries
SELECT aNr, AName, mNr, Name
FROM
Mitarbeiter NATURAL JOIN Abteilung
WHERE aName = ’A’
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Ort
Basel
Bern
Bern
Biel
Genf
Lausanne
Thun
Winterthur
Zuerich
aNr
1
1
1
1
1
1
1
AName
A
A
A
A
A
A
A
mNr
1
5
9
13
14
15
22
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Name
Müller
Meier
Dittrich
Rohner
Glauser
Jost
Bieri
5.13
Die Mengenoperationen
Datenbanksprache
(SQL)
5.14
Datenbanksprache
(SQL)
Beispiel Mengenoperationen
Pierre Fierz
Pierre Fierz
Vereinigung von Mengen
• Im Standard sind die folgenden Mengenoperationen
vorgesehen
• UNION: Vereinigung zweier Mengen
• INTERSECT: Durchschnitt zweier Mengen
• EXCEPT: Mengendifferenz
• Die Operationen sind nur auf kompatiblen Tabellen erlaubt
SQL Standard
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
• Die Operationen INTERSECT und EXCEPT sind nicht
immer Implementiert.
• INTERSECT kann mit dem JOIN . . . USING Konstrukt
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
• Die folgende Abfrage vereinigt alle Mitarbeiter die in Thun
wohnen mit den Mitarbeitern die nach dem 1.1.1995
geboren wurden.
SELECT
FROM
WHERE
UNION
SELECT
FROM
WHERE
mNr, Name, Ort, Geburtsdatum
Mitarbeiter
Ort = ’Thun’
mNr, Name, Ort, Geburtsdatum
Mitarbeiter
Geburtsdatum >= DATE’1995-01-01’
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
simmuliert werden.
mNr
11
20
7
10
• EXCEPT kann mit Subqueries in der WHERE-Klausel
simmuliert werden.
5.15
Name
Eicher
Bauer
Glauser
Glauser
Ort
Lausanne
Winterthur
Thun
Thun
Geburtsdatum
1998-04-11
1997-01-01
1969-06-05
1962-05-11
5.16
Datenbanksprache
(SQL)
Beispiel Mengenoperationen (2)
Datenbanksprache
(SQL)
Umbennenung
Pierre Fierz
Pierre Fierz
• Die Umbennenung ist notwendig, wenn in der
FROM-Klausel dieselbe Tabelle mehrmals vorkommt.
Durchschnitt von Mengen
• In SQL kann dies mit einem Alias geschehen
SQL Standard
• Wir suchen alle Abteilungen, die Sowohl Standort Bern
SQL-Query Syntax
wie auch Standort Berlin haben.
Relationale
Operatoren
SELECT
FROM
Verbundoperationen in
SQL-89
*
Abteilung NATURAL JOIN
(SELECT aNr
FROM
Standort
WHERE
Standort = ’Bern’
INTERSECT
SELECT aNr
FROM
Standort
WHERE
Standort = ’Berlin’) A
aNr
1
3
• Mit einem Alias werden alle Attribute einer Tabelle
Verbundoperationen in
SQL-89
Mitarbeiter und Vorgesetzter
Verbundoperationen
ab SQL-92
• Wir wollen die Nummer und die Namen der Mitarbeiter mit
Operatoren und
Funktionen
dem Namen ihres Vorgesetzten ausgeben
Subqueries
SELECT
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
AName
A
C
FROM
WHERE
SQL-Query Syntax
Relationale
Operatoren
umbenannt.
Verbundoperationen
ab SQL-92
SQL Standard
M.mNr, M.Name, M.Vorgesetzer,
V.Name AS VName
Mitarbeiter M, Mitarbeiter V
M.Vorgesetzter = V.mNr
mNr
23
6
20
22
Name
Ackermann
Albrecht
Bauer
Bieri
Vorgesetzter
15
2
8
9
...
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
VName
Jost
Meyer
Meier
Dittrich
5.17
Datenbanksprache
(SQL)
Umbennenung (2)
5.18
SQL ist Codd-Vollständig
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
• Wir können einzelne Attribute mit Hilfe der
SELECT-Klausel umbennenen.
SQL Standard
SQL Standard
SQL-Query Syntax
Mitarbeiter und Vorgesetzter
• Wir wollen die Nummer und die Namen der Mitarbeiter mit
dem Namen ihres Vorgesetzten ausgeben
SELECT mNr, Name, Vorgesetzer, VName
FROM
Mitarbeiter NATURAL JOIN
(SELECT mNr AS Vorgesetzter,
Name AS VName
FROM
Mitarbeiter) M
mNr
23
6
20
22
Name
Ackermann
Albrecht
Bauer
Bieri
Vorgesetzter
15
2
8
9
...
SQL-Query Syntax
• Wir haben gezeigt, dass alle Operationen der
Relationale
Operatoren
Relationenalgebra in SQL existieren.
Verbundoperationen in
SQL-89
• In der FROM-Klausel kann ein SELECT-Statement
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Subqueries
angegeben werden.
• Also können die Operationen beliebig verschachtelt
werden.
Weitere Klauseln
• Wir haben gezeigt:
Weitere Klauseln
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Insert-, Update- und
Delete-Operationen
Die Sprache SQL ist Codd-Vollständig.
Operatoren und
Funktionen
Subqueries
Insert-, Update- und
Delete-Operationen
VName
Jost
Meyer
Meier
Dittrich
5.19
5.20
Datenbanksprache
(SQL)
Outline
Datenbanksprache
(SQL)
Verbund SQL-89
Pierre Fierz
Pierre Fierz
• Die einzige Verbundoperation bis SQL-89 ist das
1 SQL Standard
kartesische Produkt.
• Die Join-Operationen werden alle mit dem kartesischen
SQL Standard
2 SQL-Query Syntax
SQL-Query Syntax
Produkt gefolgt von einer Selektion realisiert.
Relationale
Operatoren
3 Relationale Operatoren
Verbundoperationen
ab SQL-92
Verbundoperationen in
SQL-89
• Wir wollen den natürlichen Verbund von Abteilung und
Weitere Klauseln
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SELECT *
FROM
Abteilung A, Standort S
WHERE A.aNr = S.aNr
Subqueries
6 Operatoren und Funktionen
Der natürliche Verbund
Standort realisieren.
Operatoren und
Funktionen
5 Verbundoperationen ab SQL-92
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
SQL Standard
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Insert-, Update- und
Delete-Operationen
7 Subqueries
aNr
1
1
1
1
2
2
3
3
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
AName
A
A
A
A
B
B
C
C
aNr
1
1
1
1
2
2
3
3
Standort
Berlin
Bern
Genf
Thun
Bern
Thun
Berlin
Bern
...
5.21
Datenbanksprache
(SQL)
Verbund SQL-89 (2)
• Man kann natürlich die Operation über beliebig viele
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
SQL Standard
Verbund über mehrere Tabellen
SQL-Query Syntax
• Alle Mitarbeiter mit mNr, Name, Abteilung, pNr, PName,
Abteilung des Projekts
AName
A
D
A
C
A
A
Relationale
Operatoren
2 SQL-Query Syntax
3 Relationale Operatoren
pNr
1
1
1
2
2
2
...
PName
D-Be-700011
D-Be-700011
D-Be-700011
CH-Ge-90122
CH-Ge-90122
CH-Ge-90122
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen in
SQL-89
SELECT M.mNr, Name, A.AName, P.pNr, PName,
PA.AName
FROM
Mitarbeiter M, Abteilung A, MitProj MP,
Projekt P, Abteilung PA
WHERE M.aNr = A.aNr AND
M.mNr = MP.mNr AND
MP.pNr = P.pNr AND
P.paNr = PA.aNr
Name
Meier
Iselin
Ackermann
Ernst
Dittrich
Rohner
Outline
Pierre Fierz
Tabellen bilden
mNr
5
12
23
3
9
13
5.22
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
AName
A
A
A
A
A
A
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.23
5.24
Datenbanksprache
(SQL)
Verbund SQL-92
Datenbanksprache
(SQL)
Verbund SQL-92 (2)
Pierre Fierz
Pierre Fierz
• Der Kommaoperator (kartesisches Produkt) existiert
immer noch
• Weitere Verbundoperationen können direkt in der
Fromklausel angegeben werden.
SQL Standard
SQL Standard
SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
SQL Syntax (JOIN)
Verbundoperationen
ab SQL-92
<joinExpr> ::= <tableExpr> [NATURAL] [<jointype>]
JOIN <tableExpr>
[ON <conditional-expression> |
USING (<attribut-list>)]
<jointype> ::= INNER
| LEFT [OUTER]
| RIGHT [OUTER]
| FULL [OUTER]
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
• Hier noch einige Einschränkungen:
• Falls NATURAL angegeben ist, so kann weder eine ONnoch eine USING-Klausel angegeben werden.
• Falls kein NATURAL angegeben ist, so muss entweder eine
ON-Klausel oder eine USING-Klausel angegeben werden.
• Falls kein <jointype> angegeben ist, wird defaultmässig
INNER angenommen.
Insert-, Update- und
Delete-Operationen
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.25
Datenbanksprache
(SQL)
Verbund SQL-92 (3)
• Der Opearator NATURAL JOIN entspricht genau dem ./
• Die in der USING-Klausel angegebenen Felder müssen in
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
• Wir wollen den natürlichen Verbund von Abteilung und
Standort realisieren.
aNr
1
1
1
1
2
2
3
3
Operatoren und
Funktionen
beiden Tabellen vorkommen.
• Mit Hilfe der USING-Klausel können Umbennenungen
vermieden werden.
AName
A
A
A
A
B
B
C
C
...
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
JOIN USING
• Wir suchen alle Paare von Mitarbeitern, die gemeinsam an
einem Projekt mitarbeiten
Subqueries
SELECT *
FROM
Abteilung NATURAL JOIN Standort
Pierre Fierz
welche Attribute der Join ausgeführt werden soll.
Operator in der relationalen Algebra.
NATURAL JOIN
Datenbanksprache
(SQL)
Verbund SQL-92 (4)
• Mit der USING-Klausel kann angegeben werden, über
Pierre Fierz
• Der Join wird über alle Attribute mit gleichem Namen
durchgeführt.
• Im Gegensatz zum kartesischen Produkt kommen die
gemeinsamen Attribute im Resultat nur einmal vor.
5.26
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Standort
Berlin
Bern
Genf
Thun
Bern
Thun
Berlin
Bern
SELECT m1.mNr, m2.mNr, pNr
FROM
MitProj m1 JOIN MitProj m2 USING(pNr)
WHERE m1.mNr < m2.mNr
mNr
5
5
12
3
3
9
13
5.27
mNr
12
23
23
9
13
23
23
...
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
pNr
1
1
1
2
2
2
2
5.28
Datenbanksprache
(SQL)
Verbund SQL-92 (5)
Datenbanksprache
(SQL)
Verbund SQL-92 (6)
Pierre Fierz
Pierre Fierz
• Mit der ON-Klausel kann eine beliebige Bedingung für den
• Beim Verbund erscheinen die Tupel, die keine
Verbund angegeben werden.
• Logisch wird das kartesische Produkt der Tabellen
gebildet und mit der Bedingung “gefiltert”.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
• Will man diese trotzdem im Resultat kann ein OUTER JOIN
Verbundoperationen in
SQL-89
JOIN ON
• Wir wollen die Projekte am Standort ’Bern’ mit dem
Verbundoperationen
ab SQL-92
Namen der führenden Abteilung ausgeben
Operatoren und
Funktionen
SELECT p.pNr, PName, AName
FROM
Projekt JOIN Abteilung a ON
paNr = a.aNr AND PStandort = ’Bern’
Subqueries
pNr
3
11
13
16
7
9
PName
CH-BE-10110
CH-Be-80073
CH-Be-11028
BE-771820
CH-Be-89011
CH-Be-41065
Entsprechung in der anderen Tabelle besitzen nicht im
Resultat.
verwendet werden.
Insert-, Update- und
Delete-Operationen
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
• Im Resultat werden die nicht vorhandenen Attribute
einfach auf NULL gesetzt.
• LEFT OUTER JOIN ergänzt das Resultat mit allen Tupel
Weitere Klauseln
SQL Standard
aus der linken Tabelle, die in der rechten Tabelle keine
Entsprechung besitzen.
• RIGHT OUTER JOIN ergänzt das Resultat mit allen Tupel
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
aus der rechten Tabelle, die in der linken Tabelle keine
Entsprechung besitzen.
AName
A
B
B
B
C
D
• Will man beide Seiten ergänzen kann dies mit FULL
OUTER JOIN erreicht werden.
5.29
Datenbanksprache
(SQL)
Verbund SQL-92 (7)
5.30
Datenbanksprache
(SQL)
Verbund SQL-92 (8)
Pierre Fierz
Pierre Fierz
• Hier ein Beispiel für LEFT JOIN
• Hier ein Beispiel für RIGHT JOIN
SQL Standard
LEFT JOIN
SQL Standard
SQL-Query Syntax
• Wir wollen alle Mitarbeiter aus Biel mit ihren Projekten
ausgeben. Mitarbeiter ohne Projekte sollen auch in der
Tabelle erscheinen.
SELECT mNr, Name, pNr, PName
FROM
Mitarbeiter NATURAL LEFT JOIN MitProj
NATURAL LEFT JOIN Projekt
WHERE Ort = ’Biel’
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL-Query Syntax
LEFT JOIN
• Wir möchten die Projekte der Abteilung 5 mit den
Mitarbeitern. Projekte ohne Mitarbeiter sollen auch in der
Tabelle erscheinen.
SELECT mNr, Name, pNr, PName
FROM
Mitarbeiter NATURAL RIGHT JOIN MitProj
NATURAL RIGHT JOIN Projekt
WHERE paNr = 5
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
mNr
13
13
15
15
15
21
22
Name
Rohner
Rohner
Jost
Jost
Jost
Kromer
Bieri
pNr
2
3
3
5
9
NULL
NULL
PName
CH-Ge-90122
CH-BE-10110
CH-BE-10110
D-Be-55023
CH-Be-41065
NULL
NULL
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
mNr
3
11
24
18
NULL
5.31
Relationale
Operatoren
Name
Ernst
Eicher
Bodenmann
Wittwer
NULL
pNr
14
14
14
15
18
PName
CH-Ge-76095
CH-Ge-76095
CH-Ge-76095
CH-Bs-16028
CH-Ge-68120
5.32
Datenbanksprache
(SQL)
Outline
Pierre Fierz
Datenbanksprache
(SQL)
Ausdrücke
• In SQL können in der SELECT- und in der WHERE-Klausel
1 SQL Standard
Pierre Fierz
auch Ausdrücke verwendet werden.
• Standard SQL stellt eine Reihe von Arithmetischen-,
SQL Standard
2 SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
3 Relationale Operatoren
• Die einzelnen Implementationen bieten oft noch weitere
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Funktionalität an.
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Rechnen in SQL
• Wir möchten die Wochenstunden des Mitarbeiters
Subqueries
6 Operatoren und Funktionen
String- und Datums-Funktionen zur Verfügung.
Operatoren und
Funktionen
Nummer 1 in Prozente ausgedrückt haben
Subqueries
SELECT mNr, Name, ROUND(100.0 /
AS ’Anteil in
FROM
Mitarbeiter NATURAL JOIN
NATURAL JOIN
WHERE mNr = 1
Insert-, Update- und
Delete-Operationen
9 Insert-, Update- und Delete-Operationen
mNr
1
1
Name
Mueller
Mueller
Anteil in %
11.90
4.76
42.0 * Wochenstunden)
\%’, PName
MitProj
Projekt
Weitere Klauseln
PName
D-Be-55023
CH-Be-41065
5.33
Datenbanksprache
(SQL)
Ausdrücke (2)
5.34
SIMILAR TO-Prädikat
Pierre Fierz
• Hier ein Beispiel für Stringfunktionen
Pierre Fierz
SQL Standard
SQL Standard
SQL-Query Syntax
• Wir möchten alle Mitarbeiter deren Name mit ’mann’
einfache Vergleiche
Verbundoperationen in
SQL-89
endet.
Verbundoperationen
ab SQL-92
SELECT mNr, Name
FROM
Mitarbeiter
WHERE SUBSTRING(Name,
CHAR_LENGHT(Name)-3, 4) = ’mann’
Operatoren und
Funktionen
• SQL erlaubt weitergehende Prädikate
• Insbesondere können mit dem SIMILAR TO Prädikat
reguläre Ausdrücke verwendet werden.
• Leider ist der sql Standard verschieden vom POSIX
Subqueries
Standard.
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
mNr
23
24
SQL-Query Syntax
• In der Relationenalgebra basiert die Selektion nur auf
Relationale
Operatoren
Stringfunktionen in SQL
Datenbanksprache
(SQL)
Name
Ackermann
Bodenmann
5.35
• Mysql unterstützt den vollen POSIX-Standard. Das
Prädikat heisst aber RLIKE.
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.36
Datenbanksprache
(SQL)
SIMILAR TO-Prädikat (2)
Datenbanksprache
(SQL)
SIMILAR TO-Prädikat (2)
Pierre Fierz
Pierre Fierz
Platzhalter für das Prädikat SIMILAR TO
Platzhalter
%
_
[]
[^ ]
|
*
+
()
\
Bedeutung
Beliebige Zeichenkette, auch
die leere
Einzelzeichen
Alternativen oder Bereich
Negation
Oder
Wiederholung, auch 0 mal
Wiederholung, mindestens 1
mal
Gruppierung
Escape Zeichen
Beispiel
’M%’
’M_tter’
’[CK]’,
’[A-Z]’
’[^A-Z]’,
’[^M]%’
’a|b’
’[a-z]*’
’[a-z]+’
SQL Standard
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Suchen mit regulären Ausdrücken
SQL-Query Syntax
• Suchen von Mitarbeiter mit einem regulären Ausdruck
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SELECT mNr, Name
FROM
Mitarbeiter
WHERE Name SIMILAR TO ’_*(s|ei|h)er’
Subqueries
mNr
5
7
8
10
11
14
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Name
Meier
Glauser
Meier
Glauser
Eicher
Glauser
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
’(a|bc)*’
’[0-9]*\%’
5.37
SQL Built-In Funktionen
Datenbanksprache
(SQL)
Pierre Fierz
5.38
Datenbanksprache
(SQL)
SQL Built-In Funktionen (2)
• Bei den Funktionen SUM und AVG muss der Datentyp des
Pierre Fierz
Attributs numerisch sein.
• SQL kennt eine Reihe von Built-in Funktionen, die auf ein
Attribut einer Relation wirken.
COUNT(*)|COUNT(<attribut-name>) Gibt die Anzahl Tupel
in einer Relation zurück. Falls ein
Attributname angegeben ist, so werden nur
die Tupel gezählt, für die der entsprechende
Attributwert nicht NULL ist.
SUM(<attribut-name>) Berechnet die Summe des
Attributs über alle Tupel.
AVG(<attribut-name>) Berechnet den Durchschnitt des
Attributs über alle Tupel.
MAX(<attribut-name>) Bestimmt den maximalen Wert
des Attributs über alle Tupel.
MIN(<attribut-name>) Bestimmt den minimalen Wert des
Attributs über alle Tupel.
• Bei der Berechnung werden Tupel mit einem NULL-Wert
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
im entsprechenden Attribut nicht berücksichtigt.
• Das heisst, AVG ist der Durchschnitt über alle Tupel die
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
keinen NULL-Wert im Attribut enthalten.
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Zählen von Tuple
• Wir wollen die Anzahl Mitarbeiter und die Anzahl
Subqueries
SQL Standard
Mitarbeiter, die einen Vorgesetzten haben bestimmen.
Falls der Mitarbeiter keinen Vorgesetzten hat, so ist das
Feld “Vorgesetzter” NULL.
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
SELECT COUNT(*) AS Mitarbeiter,
COUNT(Vorgesetzter) AS ’mit Chef’
FROM
Mitarbeiter
Mitarbeiter
24
5.39
mit Chef
23
5.40
Datenbanksprache
(SQL)
SQL Built-In Funktionen (3)
Outline
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
SQL Standard
Summieren von Werten
SQL-Query Syntax
• Wir wollen Zusammenzählen wie viel Prozent alle
Mitarbeiter zusammen am Projekt 5 arbeiten und wie viele
Mitarbeiter daran arbeiten
SELECT COUNT(*) AS Mitarbeiter,
SUM(42.0 / 100.0 * Wochenstunden) AS ’Total %’
FROM
MitProj
WHERE
pNr = 5
Relationale
Operatoren
2 SQL-Query Syntax
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Mitarbeiter
6
SQL Standard
Total %
102.38
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.41
Datenbanksprache
(SQL)
Subqueries
5.42
Das Prädikat IN
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
• In der WHERE-Klausel können Subqueries verwendet
werden
• Subqueries werden dazu verwendet, einen Wert oder eine
Menge von Werten aufzubauen und zu fragen, ob ein
gegebenes Feld dem Wert entspricht oder in der Menge
vorhanden ist.
SQL Standard
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
• Wir wollen die Abteilungen ausgeben, die mehr als 5
Verbundoperationen in
SQL-89
Operatoren und
Funktionen
Subqueries
Mitarbeiter haben.
Weitere Klauseln
SELECT aNr, AName
FROM
Abteilung A
WHERE (SELECT COUNT(*)
FROM
Mitarbeiter M
WHERE M.aNr = A.aNr) > 5
aNr
1
2
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen
ab SQL-92
Verwendung von Subqueries
SQL Syntax (IN)
Insert-, Update- und
Delete-Operationen
::= <row value> [NOT] IN <list>
::= (<row value> [,<row value>]...)
| (<subquery>)
<row value> ::= <row element>
| (<row element> [,<row element>]...)
<row element> ::= <literal>
| <attribut-name>
<in-predikat>
<list>
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
AName
A
B
5.43
5.44
Datenbanksprache
(SQL)
Das Prädikat IN (2)
Datenbanksprache
(SQL)
Das Prädikat IN (3)
Pierre Fierz
Verwendung von IN
Pierre Fierz
SQL Standard
Verwendung von IN mit Subqueries
SQL-Query Syntax
• Suchen nach mehreren Plz, Ort Kombinationen
SELECT mNr, Name, Plz, Ort
FROM
Mitarbeiter
WHERE (Plz, Ort) IN
((’3006’,’Bern’),(’3601’,’Thun’),(’1012’,’Genf’))
Relationale
Operatoren
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
mNr
2
4
5
6
7
10
16
17
23
Name
Meyer
Schmid
Meier
Albrecht
Glauser
Glauser
Grossnicklaus
Zehnder
Ackermann
Plz
3006
3006
3006
3006
3601
3601
1012
1012
1012
Ort
Bern
Bern
Bern
Bern
Thun
Thun
Genf
Genf
Genf
SQL-Query Syntax
• Suchen aller Abteilungen die keinen Standort in ’Zuerich’
Verbundoperationen in
SQL-89
SQL Standard
haben
Relationale
Operatoren
Verbundoperationen in
SQL-89
SELECT aNr, AName
FROM
Abteilung A
WHERE ’Zuerich’ NOT IN
Subqueries
Verbundoperationen
ab SQL-92
( SELECT Standort
FROM
Standort S
WHERE A.aNr = S.aNr)
Weitere Klauseln
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
aNr
1
2
5
AName
A
B
E
Insert-, Update- und
Delete-Operationen
5.45
Datenbanksprache
(SQL)
Das Prädikat EXISTS
5.46
Outline
Pierre Fierz
Pierre Fierz
• Das Prädikat EXISTS testet, ob in einer Tabelle
1 SQL Standard
mindestens ein Tupel vorhanden ist.
• Die werte innerhalb des Tupels spielen dabei keine Rolle.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verwendung von EXITS
• Wir Suchen die Mitarbeiter, die an keinem Projekt der
Abteilung 2 arbeiten
SELECT mNr, Name
FROM
Mitarbeiter M
WHERE NOT EXISTS (SELECT *
FROM MitProj MP NATURAL JOIN
Projekt P
WHERE M.mNr = MP.mNr AND paNr = 2)
mNr
1
3
4
5
Datenbanksprache
(SQL)
2 SQL-Query Syntax
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Subqueries
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
Name
Mueller
Ernst
Schmid
Meier
...
9 Insert-, Update- und Delete-Operationen
5.47
5.48
Die ORDER BY-Klausel
Datenbanksprache
(SQL)
Datenbanksprache
(SQL)
Die ORDER BY-Klausel (2)
Pierre Fierz
Pierre Fierz
Mitarbeiter nach Name und Geburtsdatum
SQL Standard
• In einer Relation ist für die Tupel keine Ordnung
vorgegeben.
• Mit Hilfe der ORDER BY Klausel kann eine gewünschte
Reihenfolge erzwungen werden.
SQL Syntax (ORDER BY)
SQL-Query Syntax
Relationale
Operatoren
• Wir möchten Mitarbeiter sortiert nach Name und
absteigend nach Geburtsdatum auslisten.
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SELECT
FROM
WHERE
ORDER BY
mNr, Name, Geburtsdatum
Mitarbeiter
NAME SIMILAR TO ’(M|G)%’
Name, Geburtsdatum DESC
Subqueries
<orderby-klausel> ::= ORDER BY <attribut> [ASC|DESC],
[<attribut> [ASC|DESC]]. . .
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
mNr
14
7
10
16
5
8
2
1
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Name
Glauser
Glauser
Glauser
Grossnicklaus
Meier
Meier
Meyer
Mueller
Geburtsdatum
1973-07-01
1969-06-05
1962-05-11
1972-03-07
1980-12-22
1978-08-15
1971-02-28
1965-07-11
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.49
Die GROUP BY-Klausel
Datenbanksprache
(SQL)
5.50
Datenbanksprache
(SQL)
Die GROUP BY-Klausel (2)
Pierre Fierz
Pierre Fierz
Wochenstunden pro Abteilung
SQL Standard
SQL-Query Syntax
• Die GROUP BY Klausel fasst Tupel, die in den
angegebenen Attributen übereinstimmen zu einem
einzigen Tupel zusammen.
• In der SELECT Klausel dürfen dann nur Felder angegeben
werden, die für die ganze Gruppe denselben Wert haben.
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
• Wir möchten pro Abteilung die geammten Arbeitsstunden,
die an Projekten geleistet werden. Die Zeilen sollen
absteigend nach Wochenstunden sortiert werden.
SELECT
FROM
Operatoren und
Funktionen
• Dies sind die Felder, die in der GROUP BY Klausel
Subqueries
angegeben sind und
• Resultate der SQL Built-in Funktionen COUNT, SUM, usw.
Weitere Klauseln
GROUP BY
ORDER BY
Insert-, Update- und
Delete-Operationen
5.51
SQL Standard
aNr, AName, SUM(Wochenstunden) AS STD
MitProj NATURAL JOIN Projekt JOIN
Abteilung A ON paNr = A.aNr
aNr, AName
STD DESC
aNr
1
4
2
3
5
AName
A
D
B
C
E
STD
181
130
122
97
29
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.52
Datenbanksprache
(SQL)
Die HAVING-Klausel
Nullwerte
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
• Die HAVING Klausel ist die Selektionsklausel für Gruppen.
• Sie kann nur in Verbindung mit einer GROUP BY Klausel
SQL Standard
angegeben werden.
• Wir möchten alle Projekte an denen mehr als 30 Stunden
pro Woche gearbeitet wird.
pNr, PName, SUM(Wochenstunden) AS STD
MitProj NATURAL JOIN Projekt
pNr, PName
STD >= 30
pNr
2
3
5
7
9
11
12
Pname
CH-Ge-90122
CH-BE-10110
D-Be-55023
CH-Be-89011
CH-Be-41065
CH-Be-80073
CH-Th-99045
• Null-Werte repräsentieren undefinierte oder unbekannte
Werte.
Relationale
Operatoren
Wochenstunden pro Projekt
SELECT
FROM
GROUP BY
HAVING
SQL Standard
SQL-Query Syntax
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
• Der Vergleich von NULL mit einem anderen Wert ist immer
falsch.
• Auch der Vergleich von zwei Null-Werten ist immer falsch.
• Ausnahmen von dieser Regel sind der INTERSECT und der
EXCEPT Befehl. Dort werden zwei Null-Werte als gleich
Subqueries
Weitere Klauseln
betrachtet.
Insert-, Update- und
Delete-Operationen
STD
51
102
43
31
117
69
38
• Mit dem Prädikat IS [NOT] NULL ist es hingegen möglich,
abzufragen, ob der Wert eines Attributes NULL ist oder
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
nicht.
5.53
Datenbanksprache
(SQL)
Nullwerte (2)
5.54
Outline
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
SQL Standard
Wochenstunden pro Projekt
SQL-Query Syntax
• Wir möchten alle Projekte an denen keine Mitarbeiter
arbeiten.
SELECT pNr, PName
FROM
MitProj NATURAL RIGHT JOIN Projekt
WHERE mNr IS NULL
Relationale
Operatoren
2 SQL-Query Syntax
3 Relationale Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Relationale
Operatoren
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Pname
CH-Be-44901
CH-Bs-30126
CH-Ge-68120
SQL-Query Syntax
Verbundoperationen in
SQL-89
Subqueries
pNr
17
16
18
SQL Standard
6 Operatoren und Funktionen
Insert-, Update- und
Delete-Operationen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.55
5.56
Datenbanksprache
(SQL)
INSERT
INSERT 2
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
SQL Syntax (INSERT)
Neue Tabelle abfüllen
<insert> ::= INSERT INTO <table>
[(<attribut-list>)]
<source>
<source>::= VALUES (<literal-list>)
| SELECT <attribut-list> FROM . . . [WHERE . . . ] usw.
SQL Standard
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
• Der nächste Befehl fügt ein neues Projekt in die
Datenbank ein.
INSERT INTO
VALUES
CREATE TABLE Stunden (
aNr INTEGER,
AName VARCHAR(30),
Wochenstunden DOUBLE
)
• Der nächste Befehl füllt nun die neue Tabelle.
Subqueries
Neues Projekt einfügen
• Wir kreieren eine neue Tabelle Stunden.
Projekt
(pNr, PName, paNr, Standort)
(’20’, ’CH-Bs998181’, 2, ’Basel’)
INSERT INTO Stunden
(aNr, AName, Wochenstunden)
SELECT paNr, AName, SUM(Wochenstunden)
FROM
MitProj NATURAL JOIN Projekt JOIN
Abteilung A ON paNr = A.aNr
GROUP BY paNr
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.57
UPDATE
SQL Syntax (UPDATE)
::= UPTATE <table-name>
SET <assignment-list>
[WHERE <conditional-expression>]
<assignment-list> ::= <attribut> = <value>
[,<attribut> = <value>]. . .
<value>
::= literal
| <expression>
| (<subselect>)
<update>
Datenbanksprache
(SQL)
5.58
UPDATE (2)
Pierre Fierz
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL Standard
SQL-Query Syntax
SQL-Query Syntax
Relationale
Operatoren
Tabelle Stunden nachführen
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
• Der nächste Befehl führt die neue Tabelle ’Stunden’ nach.
UPDATE Stunden S
SET Wochenstunden = (SELECT SUM(Wochenstunden)
FROM MitProj NATURAL JOIN Projekt
JOIN Abteilung ON paNr = aNr
WHERE aNr = S.aNr)
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Mitarbeiter ändern
• Der nächste Befehl ändert das Geburtsdatum des
Mitarbeiters mit Nummer 5
UPDATE Mitarbeiter
SET
Geburtsdatum = Geburtsdatum + INTERVAL 1 DAY
WHERE mNr = 5
5.59
5.60
DELETE
Datenbanksprache
(SQL)
Pierre Fierz
SQL Syntax (DELETE)
SQL Standard
<delete> ::= DELETE FROM <tablename>
[WHERE <conditional-expression>]
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Abteilung löschen
• Der nächste Befehl löscht die Abteilung mit Nummer 5 aus
der Datenbank.
• Der Befehl wird nur durchgeführt, wenn keine Projekte und
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
keine Mitarbeiter zu dieser Abteilung gehören.
DELETE
FROM Abteilung
WHERE aNr = 5
5.61
Herunterladen