Sie sind auf Seite 1von 4

Situation:

Folgende Tabellen sind gegeben:

LNr
LName
LVorname
KNr
KursBez

Lehrernummer
Name des Lehrers
Vorname des Lehrers
Kursnummer
Kursbezeichnung

Dauer
Dauer des Kurses in Stunden
SNr
Schlernummer
SName
Name des Schlers
SVorname
Vorname des Schlers
SGeschlecht Geschlecht (w oder m)
Note
Note eines Schlers in einen Kurs

Entwerfen Sie zu den folgenden Aufgaben die SQL-Befehle.

Aufgaben:
1. Die neue Schlerin Britta Mller soll in die Datenbank aufgenommen werden. (Nr. 234)
INSERT INTO tblSchler
VALUES (401,'Mller','Britta','w')
2. Einige Noten des Kurses mit der Nummer 3 sind falsch eingegeben worden. Alle Noten dieses
Kurses, die schlechter als 3 sind, mssen um eine Notenstufe verbessert werden.
UPDATE tblNoten
SET Note = Note-1
WHERE KNr = 3 AND Note>3

3. Alle Vornamen der mnnlichen Schler sollen ausgegeben werden. Kein Vorname doppelt.
SELECT DISTINCT SVorname
FROM tblSchler
WHERE SGeschlecht = m
4. Suchen Sie alle mnnlichen Schler heraus, deren Nachnamen mit H oder M beginnen.
SELECT SVorname,SName
FROM tblSchler
WHERE SName like 'h%' OR SName like 'm%'

5. Alle Kurse, deren Dauer zwischen 80 und 100 Stunden liegen, sollen ausgegeben werden.
SELECT KNr,KursBez,Dauer
FROM tblKurs
WHERE Dauer BETWEEN '80' AND '100'
6. Der Lehrer Peter Mai leitet keinen Kurs. Er soll aus der Datenbank gelscht werden.
DELETE FROM tblLehrer
(Vorsicht! Dies sollte man nur dann machen wenn sichergestellt ist, dass es nur eine Person mit
diesem Namen gibt)
WHERE LName = 'Mai' AND LVorname = 'Peter'
(Alternative sofern eine eindeutige ID wie LNr bekannt ist)
WHERE LNr = '140'
7. Die beste und schlechteste Note des Schlers mit der Nummer 230 soll ausgegeben werden.
SELECT SNr,MAX(Note),MIN(Note)
FROM tblNoten
WHERE SNr = '230'
8. Ein Lehrer kann mehrere unterschiedliche Kurse leiten. Geben Sie die Gesamtstunden fr den
Lehrer 101 aus.
SELECT SUM(Dauer) AS 'Gesamtstunden'
FROM tblKurs
WHERE LNr = '101'
9. Geben Sie die Gesamtstunden fr jeden Lehrer aus.
SELECT LNr,SUM(Dauer) AS 'Gesamtstunden'
FROM tblKurs
GROUP BY 'LNr'
10. Die Anzahl der Schler in den einzelnen Kursen soll ausgegeben werden.
SELECT KNr,COUNT(SNr) AS 'Anzahl Schler'
FROM tblNoten
GROUP BY KNr
11. Wie 10: Aber nur die Anzahl der weiblichen Schler soll ausgegeben werden.

SELECT tblNoten.KNr,COUNT(tblNoten.SNr) AS 'Anzahl Schler'


FROM tblNoten
INNER JOIN tblSchler
ON tblNoten.SNr = tblSchler.SNr
WHERE SGeschlecht = 'w'
GROUP BY tblNoten.KNr
12. Wie 11: Die fnf Kurse mit den meisten weiblichen Schlern soll ausgegeben werden.
SELECT tblNoten.KNr,COUNT(tblNoten.SNr) AS 'Anzahl Schler'
FROM tblNoten
INNER JOIN tblSchler
ON tblNoten.SNr = tblSchler.SNr
WHERE SGeschlecht = 'w'
GROUP BY tblNoten.KNr
ORDER BY COUNT(tblNoten.SNr) DESC
LIMIT 5
13. Geben Sie den Kurs mit den meisten Einsen aus. (Ausgabe: KNr, AnzahlEinsen)
SELECT KNr,COUNT(Note) AS AnzahlEinsen
FROM tblNoten
WHERE Note=1
GROUP BY KNr
ORDER BY AnzahlEinsen DESC
LIMIT 1
14. Alle Schler, deren Durchschnittsnote der besuchten Kurse besser als 3 ist sollen ausgegeben
werden. (Ausgabe: SNr, Anzahl der besuchten Kurse und Durchschnittsnote)
SELECT SNr,COUNT(KNr) AS AnzahlKurse,AVG(Note) AS Durchschnittsnote
FROM tblNoten
GROUP BY SNr
HAVING Durchschnittsnote < 3
15. Die Namen und Noten der mnnlichen Schler des Kurses mit der Nummer 22 sollen
ausgegeben werden.
SELECT tblSchler.SName,tblSchler.SVorname,tblNoten.Note
FROM tblNoten

INNER JOIN tblSchler


ON tblNoten.SNr = tblSchler.SNr
WHERE SGeschlecht = 'm' AND KNr = 22

16. Geben Sie die Kurse ohne Leiter aus.


SELECT KursBez
FROM tblKurs
WHERE LNr is NULL
17. Es soll angezeigt werden, welche Lehrer welche Kurse leiten. Dabei soll auch der Lehrername mit
ausgegeben werden. Ausgabe: KNr, Kursbez, LNr aus tblKurs, LName
SELECT tblKurs.KNr,tblKurs.KursBez,tblKurs.LNr,tblLehrer.LName
FROM tblKurs
INNER JOIN tblLehrer
ON tblKurs.LNr = tblLehrer.LNr
WHERE tblKurs.LNr is not NULL
18. Erweiterung zu 16: nicht alle Kurse sind bisher mit Lehrern besetzt. Diese Kurse sollen ebenfalls
mit ausgegeben werden.
SELECT tblKurs.KNr,tblKurs.KursBez,tblKurs.LNr,tblLehrer.LName
FROM tblKurs
LEFT OUTER JOIN tblLehrer
ON tblKurs.LNr = tblLehrer.LNr