Datenbanksprache (SQL)

Werbung
Datenbanksprache
(SQL)
Pierre Fierz
Chapter 5
Datenbanksprache (SQL)
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Lecture Datenbanken
18.03.2014
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Pierre Fierz
Berner Fachhochschule
Technik und Informatik
5.1
Contents
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.2
Die Lernziele dieses Kapitels.
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.3
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.4
Datenbanksprache
(SQL)
SQL Standards
Pierre Fierz
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
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.5
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.6
SELECT Statement
Datenbanksprache
(SQL)
Pierre Fierz
SQL Syntax (SELECT)
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>]]
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.7
SELECT Statement (2)
Datenbanksprache
(SQL)
Pierre Fierz
SQL Syntax (SELECT cont.)
SQL Standard
SQL-Query Syntax
<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)
Pierre Fierz
SQL Standard
SQL-Query Syntax
• 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.
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.9
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.10
Realtionale Operatoren
Datenbanksprache
(SQL)
Pierre Fierz
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
auch Rechenoperationen.
5.11
Datenbanksprache
(SQL)
Die Selektion
Pierre Fierz
• Für die Selektion wird die WHERE-Klausel verwendet.
Alle geforderten Vergleichoperationen sind vorhanden
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Selektion von Mitarbeitern
• Wir wollen alle Mitarbeiter selektieren, die Meier oder
Verbundoperationen in
SQL-89
Schmid heissen und in Bern wohnen
Verbundoperationen
ab SQL-92
SELECT *
FROM
Mitarbeiter
WHERE (Name = ’Meier’ OR
Ort = ’Bern’
Operatoren und
Funktionen
Name = ’Schmid’) AND
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
mNr
4
5
6
9
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
Pierre Fierz
• Für die (reine) Projektion wird die SELECT-Klausel
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.
Operatoren und
Funktionen
Subqueries
SELECT DISTINCT
FROM
Plz, Ort
Mitarbeiter
Plz
4007
3006
3012
3210
1012
1210
3601
8403
8012
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Ort
Basel
Bern
Bern
Biel
Genf
Lausanne
Thun
Winterthur
Zuerich
5.13
Datenbanksprache
(SQL)
Der natürliche Verbund
Pierre Fierz
• Der Natürliche Verbund kann mit dem Befehl NATURAL
JOIN in der FROM-Klausel realisiert werden.
SQL Standard
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
Selektion und einer Projektion verbunden.
Operatoren und
Funktionen
SELECT aNr, AName, mNr, Name
FROM
Mitarbeiter NATURAL JOIN Abteilung
WHERE aName = ’A’
Subqueries
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.14
Die Mengenoperationen
Datenbanksprache
(SQL)
Pierre Fierz
• 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-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
simmuliert werden.
• EXCEPT kann mit Subqueries in der WHERE-Klausel
simmuliert werden.
5.15
Datenbanksprache
(SQL)
Beispiel Mengenoperationen
Pierre Fierz
Vereinigung von Mengen
SQL Standard
• 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’
mNr
11
20
7
10
Name
Eicher
Bauer
Glauser
Glauser
Ort
Lausanne
Winterthur
Thun
Thun
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Geburtsdatum
1998-04-11
1997-01-01
1969-06-05
1962-05-11
5.16
Beispiel Mengenoperationen (2)
Datenbanksprache
(SQL)
Pierre Fierz
Durchschnitt von Mengen
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
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
AName
A
C
5.17
Datenbanksprache
(SQL)
Umbennenung
Pierre Fierz
• Die Umbennenung ist notwendig, wenn in der
FROM-Klausel dieselbe Tabelle mehrmals vorkommt.
• In SQL kann dies mit einem Alias geschehen
• 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
dem Namen ihres Vorgesetzten ausgeben
FROM
WHERE
SQL-Query Syntax
Relationale
Operatoren
umbenannt.
SELECT
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.18
Datenbanksprache
(SQL)
Umbennenung (2)
Pierre Fierz
• Wir können einzelne Attribute mit Hilfe der
SELECT-Klausel umbennenen.
SQL Standard
SQL-Query Syntax
Mitarbeiter und Vorgesetzter
Relationale
Operatoren
• 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
...
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
VName
Jost
Meyer
Meier
Dittrich
5.19
SQL ist Codd-Vollständig
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL-Query Syntax
• Wir haben gezeigt, dass alle Operationen der
Relationenalgebra in SQL existieren.
• In der FROM-Klausel kann ein SELECT-Statement
Relationale
Operatoren
Verbundoperationen in
SQL-89
angegeben werden.
• Also können die Operationen beliebig verschachtelt
werden.
Verbundoperationen
ab SQL-92
• Wir haben gezeigt:
Weitere Klauseln
Die Sprache SQL ist Codd-Vollständig.
Operatoren und
Funktionen
Subqueries
Insert-, Update- und
Delete-Operationen
5.20
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.21
Datenbanksprache
(SQL)
Verbund SQL-89
Pierre Fierz
• Die einzige Verbundoperation bis SQL-89 ist das
kartesische Produkt.
• Die Join-Operationen werden alle mit dem kartesischen
Produkt gefolgt von einer Selektion realisiert.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Der natürliche Verbund
Verbundoperationen in
SQL-89
• Wir wollen den natürlichen Verbund von Abteilung und
Standort realisieren.
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
SELECT *
FROM
Abteilung A, Standort S
WHERE A.aNr = S.aNr
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
aNr
1
1
1
1
2
2
3
3
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.22
Datenbanksprache
(SQL)
Verbund SQL-89 (2)
• Man kann natürlich die Operation über beliebig viele
Pierre Fierz
Tabellen bilden
SQL Standard
Verbund über mehrere Tabellen
SQL-Query Syntax
• Alle Mitarbeiter mit mNr, Name, Abteilung, pNr, PName,
Abteilung des Projekts
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
mNr
5
12
23
3
9
13
Name
Meier
Iselin
Ackermann
Ernst
Dittrich
Rohner
AName
A
D
A
C
A
A
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
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
AName
A
A
A
A
A
A
5.23
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.24
Verbund SQL-92
Datenbanksprache
(SQL)
Pierre Fierz
• Der Kommaoperator (kartesisches Produkt) existiert
immer noch
SQL Standard
• Weitere Verbundoperationen können direkt in der
Fromklausel angegeben werden.
SQL Syntax (JOIN)
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
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
Insert-, Update- und
Delete-Operationen
5.25
Verbund SQL-92 (2)
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL-Query Syntax
• 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.
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.26
Datenbanksprache
(SQL)
Verbund SQL-92 (3)
• Der Opearator NATURAL JOIN entspricht genau dem ./
Operator in der relationalen Algebra.
• 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.
Pierre Fierz
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
NATURAL JOIN
Verbundoperationen
ab SQL-92
• Wir wollen den natürlichen Verbund von Abteilung und
Standort realisieren.
Subqueries
SELECT *
FROM
Abteilung NATURAL JOIN Standort
aNr
1
1
1
1
2
2
3
3
Operatoren und
Funktionen
AName
A
A
A
A
B
B
C
C
...
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Standort
Berlin
Bern
Genf
Thun
Bern
Thun
Berlin
Bern
5.27
Datenbanksprache
(SQL)
Verbund SQL-92 (4)
• Mit der USING-Klausel kann angegeben werden, über
Pierre Fierz
welche Attribute der Join ausgeführt werden soll.
• Die in der USING-Klausel angegebenen Felder müssen in
beiden Tabellen vorkommen.
• Mit Hilfe der USING-Klausel können Umbennenungen
vermieden werden.
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
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
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
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)
Pierre Fierz
• Mit der ON-Klausel kann eine beliebige Bedingung für den
Verbund angegeben werden.
• Logisch wird das kartesische Produkt der Tabellen
gebildet und mit der Bedingung “gefiltert”.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
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
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
AName
A
B
B
B
C
D
5.29
Verbund SQL-92 (6)
Datenbanksprache
(SQL)
Pierre Fierz
• Beim Verbund erscheinen die Tupel, die keine
Entsprechung in der anderen Tabelle besitzen nicht im
Resultat.
• Will man diese trotzdem im Resultat kann ein OUTER JOIN
verwendet werden.
• Im Resultat werden die nicht vorhandenen Attribute
einfach auf NULL gesetzt.
• LEFT OUTER JOIN ergänzt das Resultat mit allen Tupel
aus der linken Tabelle, die in der rechten Tabelle keine
Entsprechung besitzen.
• RIGHT OUTER JOIN ergänzt das Resultat mit allen Tupel
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
aus der rechten Tabelle, die in der linken Tabelle keine
Entsprechung besitzen.
• Will man beide Seiten ergänzen kann dies mit FULL
OUTER JOIN erreicht werden.
5.30
Datenbanksprache
(SQL)
Verbund SQL-92 (7)
Pierre Fierz
• Hier ein Beispiel für LEFT JOIN
SQL Standard
LEFT JOIN
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
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
5.31
Datenbanksprache
(SQL)
Verbund SQL-92 (8)
Pierre Fierz
• Hier ein Beispiel für RIGHT JOIN
SQL Standard
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
Relationale
Operatoren
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
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
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.33
Datenbanksprache
(SQL)
Ausdrücke
• In SQL können in der SELECT- und in der WHERE-Klausel
Pierre Fierz
auch Ausdrücke verwendet werden.
• Standard SQL stellt eine Reihe von Arithmetischen-,
String- und Datums-Funktionen zur Verfügung.
• Die einzelnen Implementationen bieten oft noch weitere
Funktionalität an.
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
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
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.34
Datenbanksprache
(SQL)
Ausdrücke (2)
Pierre Fierz
• Hier ein Beispiel für Stringfunktionen
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Stringfunktionen in SQL
• Wir möchten alle Mitarbeiter deren Name mit ’mann’
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
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
mNr
23
24
Name
Ackermann
Bodenmann
5.35
SIMILAR TO-Prädikat
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL-Query Syntax
• In der Relationenalgebra basiert die Selektion nur auf
einfache Vergleiche
• 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
Standard.
• 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)
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%’
SQL Standard
’M_tter’
’[CK]’,
’[A-Z]’
’[^A-Z]’,
’[^M]%’
’a|b’
’[a-z]*’
’[a-z]+’
Verbundoperationen in
SQL-89
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
’(a|bc)*’
’[0-9]*\%’
5.37
Datenbanksprache
(SQL)
SIMILAR TO-Prädikat (2)
Pierre Fierz
SQL Standard
Suchen mit regulären Ausdrücken
• Suchen von Mitarbeiter mit einem regulären Ausdruck
SELECT mNr, Name
FROM
Mitarbeiter
WHERE Name SIMILAR TO ’_*(s|ei|h)er’
mNr
5
7
8
10
11
14
Name
Meier
Glauser
Meier
Glauser
Eicher
Glauser
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.38
SQL Built-In Funktionen
Datenbanksprache
(SQL)
Pierre Fierz
• 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.
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.39
Datenbanksprache
(SQL)
SQL Built-In Funktionen (2)
• Bei den Funktionen SUM und AVG muss der Datentyp des
Pierre Fierz
Attributs numerisch sein.
• Bei der Berechnung werden Tupel mit einem NULL-Wert
im entsprechenden Attribut nicht berücksichtigt.
• Das heisst, AVG ist der Durchschnitt über alle Tupel die
keinen NULL-Wert im Attribut enthalten.
SQL Standard
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
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
mit Chef
23
5.40
Datenbanksprache
(SQL)
SQL Built-In Funktionen (3)
Pierre Fierz
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Mitarbeiter
6
Total %
102.38
5.41
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.42
Datenbanksprache
(SQL)
Subqueries
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-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Verwendung von Subqueries
• Wir wollen die Abteilungen ausgeben, die mehr als 5
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
Insert-, Update- und
Delete-Operationen
AName
A
B
5.43
Das Prädikat IN
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL Syntax (IN)
SQL-Query Syntax
Relationale
Operatoren
::= <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
5.44
Datenbanksprache
(SQL)
Das Prädikat IN (2)
Pierre Fierz
Verwendung von IN
SQL Standard
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 in
SQL-89
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
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.45
Datenbanksprache
(SQL)
Das Prädikat IN (3)
Pierre Fierz
Verwendung von IN mit Subqueries
SQL Standard
SQL-Query Syntax
• Suchen aller Abteilungen die keinen Standort in ’Zuerich’
haben
Relationale
Operatoren
Verbundoperationen in
SQL-89
SELECT aNr, AName
FROM
Abteilung A
WHERE ’Zuerich’ NOT IN
Verbundoperationen
ab SQL-92
( SELECT Standort
FROM
Standort S
WHERE A.aNr = S.aNr)
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
aNr
1
2
5
AName
A
B
E
Insert-, Update- und
Delete-Operationen
5.46
Datenbanksprache
(SQL)
Das Prädikat EXISTS
Pierre Fierz
• Das Prädikat EXISTS testet, ob in einer Tabelle
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
Name
Mueller
Ernst
Schmid
Meier
...
5.47
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.48
Die ORDER BY-Klausel
Datenbanksprache
(SQL)
Pierre Fierz
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
<orderby-klausel> ::= ORDER BY <attribut> [ASC|DESC],
[<attribut> [ASC|DESC]]. . .
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.49
Datenbanksprache
(SQL)
Die ORDER BY-Klausel (2)
Pierre Fierz
Mitarbeiter nach Name und Geburtsdatum
• Wir möchten Mitarbeiter sortiert nach Name und
absteigend nach Geburtsdatum auslisten.
SELECT
FROM
WHERE
ORDER BY
mNr, Name, Geburtsdatum
Mitarbeiter
NAME SIMILAR TO ’(M|G)%’
Name, Geburtsdatum 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
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.50
Die GROUP BY-Klausel
Datenbanksprache
(SQL)
Pierre Fierz
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.
• Dies sind die Felder, die in der GROUP BY Klausel
angegeben sind und
• Resultate der SQL Built-in Funktionen COUNT, SUM, usw.
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
5.51
Datenbanksprache
(SQL)
Die GROUP BY-Klausel (2)
Pierre Fierz
Wochenstunden pro Abteilung
SQL Standard
• Wir möchten pro Abteilung die geammten Arbeitsstunden,
die an Projekten geleistet werden. Die Zeilen sollen
absteigend nach Wochenstunden sortiert werden.
SELECT
FROM
GROUP BY
ORDER BY
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
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.
SQL-Query Syntax
Relationale
Operatoren
Wochenstunden pro Projekt
• Wir möchten alle Projekte an denen mehr als 30 Stunden
pro Woche gearbeitet wird.
SELECT
FROM
GROUP BY
HAVING
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
STD
51
102
43
31
117
69
38
5.53
Nullwerte
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
• Null-Werte repräsentieren undefinierte oder unbekannte
Werte.
• 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
betrachtet.
• 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.54
Datenbanksprache
(SQL)
Nullwerte (2)
Pierre Fierz
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
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Weitere Klauseln
pNr
17
16
18
Pname
CH-Be-44901
CH-Bs-30126
CH-Ge-68120
Insert-, Update- und
Delete-Operationen
5.55
Outline
Datenbanksprache
(SQL)
Pierre Fierz
1 SQL Standard
2 SQL-Query Syntax
3 Relationale Operatoren
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
4 Verbundoperationen in SQL-89
5 Verbundoperationen ab SQL-92
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
6 Operatoren und Funktionen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
7 Subqueries
8 Weitere Klauseln
9 Insert-, Update- und Delete-Operationen
5.56
Datenbanksprache
(SQL)
INSERT
Pierre Fierz
SQL Syntax (INSERT)
<insert> ::= INSERT INTO <table>
[(<attribut-list>)]
<source>
<source>::= VALUES (<literal-list>)
| SELECT <attribut-list> FROM . . . [WHERE . . . ] usw.
SQL Standard
SQL-Query Syntax
Relationale
Operatoren
Verbundoperationen in
SQL-89
Verbundoperationen
ab SQL-92
Operatoren und
Funktionen
Subqueries
Neues Projekt einfügen
Weitere Klauseln
Insert-, Update- und
Delete-Operationen
• Der nächste Befehl fügt ein neues Projekt in die
Datenbank ein.
INSERT INTO
VALUES
Projekt
(pNr, PName, paNr, Standort)
(’20’, ’CH-Bs998181’, 2, ’Basel’)
5.57
INSERT 2
Datenbanksprache
(SQL)
Pierre Fierz
Neue Tabelle abfüllen
SQL Standard
• Wir kreieren eine neue Tabelle Stunden.
CREATE TABLE Stunden (
aNr INTEGER,
AName VARCHAR(30),
Wochenstunden DOUBLE
)
• Der nächste Befehl füllt nun die neue Tabelle.
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.58
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)
Pierre Fierz
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
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
UPDATE (2)
Datenbanksprache
(SQL)
Pierre Fierz
SQL Standard
SQL-Query Syntax
Tabelle Stunden nachführen
• 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
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