0% fanden dieses Dokument nützlich (0 Abstimmungen)
56 Ansichten31 Seiten

4 SQL Teil 1

Hochgeladen von

hmmamamr
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
56 Ansichten31 Seiten

4 SQL Teil 1

Hochgeladen von

hmmamamr
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

SQL

Die Folien bauen auf dem Foliensatz zum Buch und den von Prof. Dr.-Ing.
Norbert Fuhr in den vergangenen Semestern verwendeten Folien auf.

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


Datenbankentwurf

Um was geht‘s?
Wir wollen lernen, wie wir in Datenbanken (komplexe)
Abfragen erstellen können, um Daten abzufragen,
zusammenzustellen, zu aggregieren und zu verändern.

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


2
Datenbanken: SQL

Kapitel 4: SQL

§ Structured Query Language


§ Standardisierte
§ Datendefinitions (DDL)-
§ Datenmanipulations (DML)-
§ Anfrage (Query)-Sprache
§ Derzeit aktueller Standard ist SQL 2016

Für praktische Übungen steht eine Web-Seite zur Verfügung:


§ http://hyper-db.com/interface.html

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


3
http://hyper-db.com/interface.html
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
4
voraussetzen
Datenbanken: SQL

Vorgänger Nachfolger
Uni-Schema VorlNr
N M
MatrNr SWS
hören Vorlesungen
Name M
Studenten N Titel
N
N M
Semester

Note prüfen lesen

PersNr
1 1 Rang

Name Assistenten arbeitenFür Professoren


N 1 Raum
Fachgebiet
5
PersNr Name
Professoren Studenten
PersNr Name Rang Raum MatrNr Name Semester Vorlesungen
2125 Sokrates C4 226 24002 Xenokrates 18 VorlNr Titel SWS gelesenVon
2126 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137
2127 Kopernikus C3 310 26120 Fichte 10 5041 Ethik 4 2125
2133 Popper C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 2126
2134 Augustinus C3 309 27550 Schopenhauer 6 5049 Mäeutik 2 2125
2136 Curie C4 36 28106 Carnap 3 5052 Logik 4 2125
2137 Kant C4 7 29120 Theophrastos 2 5216 Wissenschaftstheorie 3 2126
voraussetzen 29555 Feuerbach 2
5216 Bioethik 2 2126
Vorgänger Nachfolger hören
5259 Der Wiener Kreis 2 2133
5001 5041 MatrNr VorlNr
5001 5043 5022 Glaube und Wissen 2 2134
26120 5001
5001 5049 4630 Die 3 Kritiken 4 2137
27550 5001
5041 5216 27550 4052 Assistenten
5043 5052 28106 5041 PersNr Name Fachgebiet Boss
5041 5052 28106 5052 3002 Platon Ideenlehre 2125
5052 5259 28106 5216 3003 Aristoteles Syllogistik 2125
prüfen 3004 Wittgenstein Sprachtheorie 2126
28106 5259
MatrNr VorlNr PersNr Note 3005 Rhetikus Planetenbewegung 2127
29120 5001
28106 5001 2126 1 3006 Newton Keplersche Gesetze 2127
29120 5041
25403 5041 2125 2 3007 Spinoza Gott und Natur 2126
29120 5049
27550 4630 2137 2
Datenbanken: SQL

0. Kurzeinführung

§ Datendefinition
§ Veränderungen am Datenbestand
§ Einfache Anfragen

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


7
Datendefinition

8
Datenbanken: SQL

(Einfache) Datendefinition in SQL

Datentypen: Anlegen einer Tabelle:


§ character (n), char (n) § create table Professoren
§ character varying (n), varchar (n) (PersNr integer not null,
§ numeric (p,s), integer Name varchar (30) not null
§ blob oder raw für sehr große binäre Rang character (2) );
Daten
§ clob für sehr große String-Attribute
§ date für Datumsangaben

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


9
Veränderungen am
Datenbestand

10
Datenbanken: SQL

Veränderungen am Datenbestand

Einfügen von Tupeln


insert into Studenten (MatrNr, Name)
values (28121, 'Archimedes');

insert into hören


select MatrNr, VorlNr
from Studenten, Vorlesungen
where Titel= 'Logik' ;
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
11
Datenbanken: SQL

Studenten
MatrNr Name Semester


29120 Theophrastos 2
29555 Feuerbach 2
28121 Archimedes -

insert into Studenten (MatrNr, Name) Null-Wert


values (28121, 'Archimedes');

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


12
Datenbanken: SQL

Veränderungen am Datenbestand

Löschen von Tupeln


delete Studenten
where Semester > 13;

Verändern von Tupeln


update Studenten
set Semester= Semester + 1;

WS 2022/23 13
Datenbanken: SQL

Einfache SQL-Anfrage

select PersNr, Name PersNr Name


from Professoren 2125 Sokrates
where Rang= 'C4'; 2126 Russel
2136 Curie
2137 Kant

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


14
SQL-Abfragen

15
Datenbanken: SQL

1. SQL-Anfragen

§ Sortierung
§ Duplikateliminierung
§ SQL vs. Relationenalgebra / Tupelkalkül
§ Anfragen über mehrere Relationen
§ Kanonische Übersetzung in relationale Algebra
§ Tupelvariablen
§ Mengenoperationen

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


16
Datenbanken: SQL

Sortierung

select PersNr, Name, Rang PersNr Name Rang


from Professoren 2136 Curie C4
order by Rang desc, Name asc; 2137 Kant C4
2126 Russel C4
2125 Sokrates C4
2134 Augustinus C3
2127 Kopernikus C3
2133 Popper C3

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


17
Datenbanken: SQL

Duplikateliminierung

select Rang select distinct Rang


from Professoren from Professoren

Rang
C4 Rang
C4 C3
C3
C4
C3
C3
C4
C4 18
Datenbanken: SQL

SQL vs. Relationenalgebra/Tupelkalkül

§ SQL basiert zwar auf dem Tupelkalkül


§ SQL verwendet auch Operatoren der Relationenalgebra (s.u.)

aber:
§ SQL arbeitet faktisch mit Listen von Tupeln
→ die Reihenfolge kann beeinflusst werden (ORDER BY)
→ Duplikate werden nicht automatisch eliminiert (DISTINCT)

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


19
Professoren Studenten
PersNr Name Rang Raum MatrNr Name Semester Vorlesungen
2125 Sokrates C4 226 24002 Xenokrates 18 VorlNr Titel SWS gelesenVon
2126 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137
2127 Kopernikus C3 310 26120 Fichte 10 5041 Ethik 4 2125
2133 Popper C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 2126
2134 Augustinus C3 309 27550 Schopenhauer 6 5049 Mäeutik 2 2125
2136 Curie C4 36 28106 Carnap 3 5052 Logik 4 2125
2137 Kant C4 7 29120 Theophrastos 2 5216 Wissenschaftstheorie 3 2126
voraussetzen 29555 Feuerbach 2
5216 Bioethik 2 2126
Vorgänger Nachfolger hören
5259 Der Wiener Kreis 2 2133
5001 5041 MatrNr VorlNr
5001 5043 5022 Glaube und Wissen 2 2134
26120 5001
5001 5049 4630 Die 3 Kritiken 4 2137
27550 5001
5041 5216 27550 4052 Assistenten
5043 5052 28106 5041 PersNr Name Fachgebiet Boss
5041 5052 28106 5052 3002 Platon Ideenlehre 2125
5052 5259 28106 5216 3003 Aristoteles Syllogistik 2125
prüfen 3004 Wittgenstein Sprachtheorie 2126
28106 5259
MatrNr VorlNr PersNr Note 3005 Rhetikus Planetenbewegung 2127
29120 5001
28106 5001 2126 1 3006 Newton Keplersche Gesetze 2127
29120 5041
25403 5041 2125 2 3007 Spinoza Gott und Natur 2126
29120 5049
27550 4630 2137 2
Vorlesungen
VorlNr Titel SWS gelesenVon

Datenbanken: SQL 5001 Grundzüge 4 2137


5041 Ethik 4 2125

Anfragen über mehrere Relationen 5043


5049
Erkenntnistheorie
Mäeutik
3
2
2126
2125
5052 Logik 4 2125
5216 Wissenschaftstheorie 3 2126
Welcher Professor liest "Mäeutik"? 5216 Bioethik 2 2126
5259 Der Wiener Kreis 2 2133
5022 Glaube und Wissen 2 2134
select Name, Titel
4630 Die 3 Kritiken 4 2137
from Professoren, Vorlesungen
Professoren
where PersNr = gelesenVon and Titel = PersNr Name Rang Raum
`Mäeutik‘ ; 2125 Sokrates C4 226
2126 Russel C4 232
2127 Kopernikus C3 310
ΠName,Titel(σPersNr=gelesenVon∧Titel='Mäeutik'(Prof 2133 Popper C3 52
essoren x Vorlesungen)) 2134 Augustinus C3 309
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23 2136 Curie C4 36
21
2137 Kant C4 7
Datenbanken: SQL

Anfragen über mehrere Relationen

Professoren Professoren
PersNr Name Rang Raum VorlNr Tite SWS gelesenVon
2125 Sokrates C4 226 5001 Grundzüge 4 2137
2126 Russel C4 232 5041 Russel 4 2125


5049 Mäeutik 2 2125
2137 Kant C4 7


4630 Die 3 Kritiken 4 2137

Verknüpfung
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23 x 22
Datenbanken: SQL
PersNr Name Rang Raum VorlNr Titel SWS gelesenVon
2125 Sokrates C4 226 5001 Grundzüge 4 2137
2125 Sokrates C4 226 5041 Ethik 4 2125


2125 Sokrates C4 226 5049 Mäeutik 2 2125


2126 Russel C4 232 5001 Grundzüge 4 2137
2126 Russel C4 232 5041 Ethik 4 2125


2137 Kant C4 7 4630 Die 3 Kritiken 4 2137
Auswahl
PersNr Name Rang Raum VorlNr Titel SWS gelesenVon
2125 Sokrates C4 226 5049 Mäeutik 2 2125
Projektion

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


Name Titel
23
Sokrates Mäeutik
Datenbanken: SQL

Kanonische Übersetzung in die relationale Algebra

Allgemein hat eine Übersetzung in die


(ungeschachtelte) SQL- relationale Algebra:
Anfrage die Form:

select A1, ..., An


from R1, ..., Rk
where P;

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


24
Datenbanken: SQL

Anfragen über mehrere Relationen / Tupelvariablen


Welche Studenten hören welche Vorlesungen?

select Name, Titel


from Studenten, hören, Vorlesungen
where Studenten.MatrNr = hören.MatrNr and
hören.VorlNr = Vorlesungen.VorlNr;

§ Bei mehreren Relationen (auch mehrfachem Bezug auf dieselbe Relation) müssen in
der Regel Tupelvariablen verwendet werden
§ Als implizite Tupelvariablen können die Namen der Relationen verwendet werden
§ Das geht aber nur, wenn für jede Relation nur eine Tupelvariable benötigt wird
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
25
Datenbanken: SQL

Explizite Tupelvariablen
werden im from-Teil deklariert:

select s.Name, v.Titel


from Studenten s, hören h, Vorlesungen V
where s.MatrNr = h.MatrNr and
h.VorlNr = v.VorlNr;

Beachte: Die Tupelvariablen müssen in allen Teilen der Anfrage verwendet werden, nicht
nur im where-Teil

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


26
Datenbanken: SQL

Tupelvariablen: Veranschaulichung
Welcher Professor liest „Mäeutik“?

select p.Name, v.Titel


from Professoren p, Vorlesungen v
where p.PersNr = v.gelesenVon and v.Titel = `Mäeutik´;
Vorlesungen
VorlNr Titel SWS gelesenVon
Professoren
5001 Grundzüge 4 2137 v PersNr Name Rang Raum
5041 Ethik 4 2125 p 2125 Sokrates C4 226
5043 Erkenntnistheorie 3 2126


2126 Russel C4 232


5049 Mäeutik 2 2125
2127 Kopernikus C3 310
5052 Logik 4 2125
2133 Popper C3 52
5216 Wissenschaftstheorie 3 2126
2134 Augustinus C3 309
5216 Bioethik 2 2126
2136 Curie C4 36
5259 Der Wiener Kreis 2 2133
2137 Kant C4 7
5022 Glaube und Wissen 2 2134
27
4630 Die 3 Kritiken 4 2137
Datenbanken: SQL

Tupelvariablen – Merke:
§ Zur Sicherheit immer Tupelvariablen verwenden

§ Manchmal braucht man sie zwar nicht, aber


§ der zusätzliche Schreibaufwand ist gering

§ die Anfragelogik wird deutlicher

§ wer selten Tupelvariablen verwendet, merkt oft nicht, wenn es ohne sie nicht geht

Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23


28
Professoren Studenten
PersNr Name Rang Raum MatrNr Name Semester Vorlesungen
2125 Sokrates C4 226 24002 Xenokrates 18 VorlNr Titel SWS gelesenVon
2126 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137
2127 Kopernikus C3 310 26120 Fichte 10 5041 Ethik 4 2125
2133 Popper C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 2126
2134 Augustinus C3 309 27550 Schopenhauer 6 5049 Mäeutik 2 2125
2136 Curie C4 36 28106 Carnap 3 5052 Logik 4 2125
2137 Kant C4 7 29120 Theophrastos 2 5216 Wissenschaftstheorie 3 2126
voraussetzen 29555 Feuerbach 2
5216 Bioethik 2 2126
Vorgänger Nachfolger hören
5259 Der Wiener Kreis 2 2133
5001 5041 MatrNr VorlNr
5001 5043 5022 Glaube und Wissen 2 2134
26120 5001
5001 5049 4630 Die 3 Kritiken 4 2137
27550 5001
5041 5216 27550 4052 Assistenten
5043 5052 28106 5041 PersNr Name Fachgebiet Boss
5041 5052 28106 5052 3002 Platon Ideenlehre 2125
5052 5259 28106 5216 3003 Aristoteles Syllogistik 2125
prüfen 3004 Wittgenstein Sprachtheorie 2126
28106 5259
MatrNr VorlNr PersNr Note 3005 Rhetikus Planetenbewegung 2127
29120 5001
28106 5001 2126 1 3006 Newton Keplersche Gesetze 2127
29120 5041
25403 5041 2125 2 3007 Spinoza Gott und Natur 2126
29120 5049
27550 4630 2137 2
Datenbanken: SQL

Mengenoperationen
Mengenoperationen union, intersect, minus
(Anleihen an der Relationenalgebra)

( select a.Name
from Assistenten a)
union
( select p.Name
from Professoren p);

30
http://hyper-db.com/interface.html
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
31

Das könnte Ihnen auch gefallen