Datenbanken

Werbung
Datenbanken – Übung – Ü00
SQL Abf
SQL-Abfragen
Dr.-Ing. Peter Steininger
Steinbuch Centre for Computing (SCC)
www.kit.edu
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Datenbankschema – Supermarkt
tbl_Waren
tbl_Verkauf
Spaltenname
Datentyp
NULL-Werte zulassen
Spaltenname
Datentyp
id
bigint
id
bigint
strWarenName
nvarchar(100)
dtDate
datetime
mPreis
money
fk_Waren
bigint
fk_Warengruppe
bigint
intMenge
int
NULL-Werte zulassen
tbl_warengruppe
Spaltenname
Datentyp
id
bigint
strWarengruppenName
nvarchar(50)
13709030 DBMS
Dr. Peter Steininger
NULL-Werte zulassen
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
1
Supermarkt – Tabellendaten I/II
tbl_Waren
id
----------1
2
3
4
5
6
7
strWarenName
----------------------------Papiertaschentücher
Erdbeer
Erbsen
Bohnen
Elmex
Birne
Apfel
mPreis
--------------------1,99
0,99
1,59
2,35
3,12
3,34
1,29
fk_Warengruppe
-------------1
2
6
6
5
1
2
tbl_Verkauf
id
----------1
2
3
4
5
6
7
13709032 DBMS
dtDate
----------------------2009-01-10 19:47:29.227
2009-01-10 19:47:36.680
2009-01-10 19:47:46.403
2009-01-10 19:47:54.440
2009-01-10 19:48:04.110
2009-01-10 19:48:13.113
2009-01-10 19:48:24.153
Dr. Peter Steininger
fk_Waren
----------3
2
7
3
2
5
1
intMenge
----------2
5
10
2
10
2
3
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
Supermarkt – Tabellendaten II/II
tbl_Warengruppe
id
----------1
2
3
4
5
6
13709033 DBMS
strWarengruppenName
-------------------------------------------------Papier
Obst
Marmelade
Honig
Zahnpasta
Tiefkühlprodukt
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
2
Datenbankschema – Supermarkt (erweitert)
tbl_Waren
tbl_Verkauf
Spaltenname
Datentyp
NULL-Werte zulassen
Spaltenname
Datentyp
id
bigint
id
bigint
strWarenName
tW
N
nvarchar(100)
h (100)
dtD t
dtDate
d t ti
datetime
mPreis
money
fk_Waren
bigint
fk_Warengruppe
bigint
intMenge
int
fk_Mitarbeiter
bigint
tbl_warengruppe
tbl_Mitarbeiter
Spaltenname
Datentyp
NULL-Werte zulassen
Spaltenname
Datentyp
id
bi i t
bigint
id
bi i t
bigint
strWarengruppenName
nvarchar(50)
StrVerkaeufer
nchar(100)
13709031 DBMS
NULL-Werte zulassen
Dr. Peter Steininger
NULL-Werte zulassen
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
20090405
Supermarkt (erweitert) – Tabellendaten I/II
tbl_Verkauf
id
----------1
2
3
4
5
6
7
dtDate
----------------------2009
01 10 19:47:29.227
2009-01-10
2009-01-10 19:47:36.680
2009-01-10 19:47:46.403
2009-01-10 19:47:54.440
2009-01-10 19:48:04.110
2009-01-10 19:48:13.113
2009-01-10 19:48:24.153
fk_Waren
----------3
2
7
3
2
5
1
intMenge
----------2
5
10
2
10
2
3
fk_Mitarbeiter
-------------101
103
100
105
100
101
102
tbl_Mitarbeiter
id
----------100
101
102
103
104
105
13709034 DBMS
strVerkaeufer
-------------------------------------------------Claudia
Hans
Dieter
Maria
Simone
Elly
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
3
SQL-Abfragen schreiben I/V
Ausgabe der Produkte, Preise und der Warengruppe sortiert nach Preis, wie im Bsp.:
Produkt
Preis
Warengruppe
------------------------------------------ -------------------------------------Birne
3,34
3 34
Papier
Elmex
3,12
Zahnpasta
Bohnen
2,35
Tiefkühlprodukt
Papiertaschentücher
1,99
Papier
Erbsen
1,59
Tiefkühlprodukt
Apfel
1,29
Obst
Erdbeer
0,99
Obst
13709035 DBMS
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
SQL-Abfragen schreiben I/V – Lösung
select
tbl_Waren.strWarenName as Produkt,
tbl_Waren.mPreis as Preis,
tbl Warengruppe.strWarengruppenName as Warengruppe
from tbl_Waren, tbl_Warengruppe
where tbl_Waren.fk_Warengruppe = tbl_Warengruppe.id
order by mPreis desc
13709040 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
4
SQL-Abfragen schreiben II/V
Ausgabe der Warengruppen mit deren Umsätzen, sortiert nach Warengruppen, wie im Bsp.:
strWarengruppenName
-------------------------------------------------Obst
Papier
Tiefkühlprodukt
Zahnpasta
13709036 DBMS
Dr. Peter Steininger
Umsatz
--------------------27,75
27 75
5,97
6,36
6,24
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
SQL-Abfragen schreiben II/V – Lösung
select
tbl_Warengruppe.strWarengruppenName,
sum(tbl_Verkauf.intMenge*tbl_Waren.mPreis) as Umsatz
from tbl_Warengruppe, tbl_Verkauf, tbl_Waren
where tbl_Warengruppe.id = tbl_Waren.fk_Warengruppe
and tbl_Verkauf.fk_Waren = tbl_Waren.id
group by tbl_Warengruppe.strWarengruppenName
order by tbl_Warengruppe.strWarengruppenName
13709041 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
5
SQL-Abfragen schreiben III/V
Die Filialleitung will wissen welche Artikelgruppen noch nicht verkauft wurden. Schreiben Sie die
SQL-Anweisung, die folgendes Ergebnis liefert:
Warengruppen ohne Umsatz
-------------------------------------------------Honig
Marmelade
13709037 DBMS
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
SQL-Abfragen schreiben III/V – Lösung I/II
select
tbl_Warengruppe.strWarengruppenName as 'Warengruppen ohne Umsatz'
from tbl Warengruppe
except
select
distinct tbl_Warengruppe.strWarengruppenName
from tbl_Verkauf
join tbl_Waren on tbl_Verkauf.fk_Waren = tbl_Waren.id
join tbl_Warengruppe on tbl_Waren.fk_Warengruppe = tbl_Warengruppe.id
13709042 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
6
SQL-Abfragen schreiben III/V – Lösung II/II
select
tbl_Warengruppe.strWarengruppenName
from tbl Warengruppe
where tbl_Warengruppe.strWarengruppenName not in
(
select
tbl_Warengruppe.strWarengruppenName
from tbl_Waren
join tbl_Verkauf on tbl_Waren.id = tbl_Verkauf.fk_Waren
join tbl_Warengruppe on tbl_Waren.fk_Warengruppe = tbl_Warengruppe.id
group by tbl_Warengruppe.strWarengruppenName
)
13709043 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
SQL-Abfragen schreiben IV/V
Schreiben Sie eine SQL-Anweisung, die alle Verkäufe in folgender Art ausgibt:
intMenge
----------2
5
10
2
10
2
3
13709038 DBMS
strWarenName
mPreis
Warenwert
----------------------------------------- --------------------Erbsen
1,59
3,18
1 59
3 18
Erdbeer
0,99
4,95
Apfel
1,29
12,90
Erbsen
1,59
3,18
Erdbeer
0,99
9,90
Elmex
3,12
6,24
Papiertaschentücher 1,99
5,97
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
7
SQL-Abfragen schreiben IV/V – Lösung
select
tbl_Verkauf.intMenge,
tbl_Waren.strWarenName,
tbl Waren.mPreis,
(tbl_Waren.mPreis * tbl_Verkauf.intMenge) as Warenwert
from tbl_Verkauf
join tbl_Waren on tbl_Verkauf.fk_Waren = tbl_Waren.id
13709044 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
SQL-Abfragen schreiben V/V
Schreiben Sie eine SQL-Anweisung, die für einen vorgegebenen Mitarbeiter alle Verkäufe wie im
folgenden Beispiel ausgibt:
strWarenName
strWarengruppenName
intMenge
------------------------------------------------------------------ ----------Apfel
Obst
10
Erdbeer
Obst
10
13709039 DBMS
Dr. Peter Steininger
20090405
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
8
SQL-Abfragen schreiben V/V – Lösung
select
tbl_Waren.strWarenName,
tbl_Warengruppe.strWarengruppenName,
tbl Verkauf.intMenge
from tbl_Verkauf
join tbl_Mitarbeiter on tbl_Verkauf.fk_Mitarbeiter = tbl_Mitarbeiter.id
join tbl_Waren on tbl_Waren.id = tbl_Verkauf.fk_Waren
join tbl_Warengruppe on tbl_Warengruppe.id = tbl_Waren.fk_Warengruppe
where tbl_Mitarbeiter.strVerkaeufer = 'MITARBEITER';
13709045 DBMS
Dr. Peter Steininger
20090531
KIT - die Kooperation von
Forschungszentrum Karlsruhe GmbH
und Universität Karlsruhe (TH)
9
Herunterladen