-- Tabelle um eine Spalte erweitern: alter table Studenten add Vorname varchar(15) -- Tabellenspalte ändern: alter table Studenten modify Vorname varchar(20) -- Tabelle um eine Spalte verkürzen: alter table Studenten drop column Vorname -- Tabelle aus DB-Schema löschen: drop table Studenten -- 1. Liste alle Studenten: select * from Studenten -- 2. Liste Personalnummer und Name der C4-Professoren: select PersNr, Name from Professoren where Rang='C4' -- 3. Zähle alle Studenten: select count(*) from Studenten -- 4. Liste Namen und Studiendauer in Jahren von allen Studenten, select Name, Semester/2 as Studienjahr from Studenten where Semester is not null -- 5. Liste alle Studenten mit Semesterzahlen zwischen 1 und 4: select * from Studenten where Semester >= 1 and Semester <= 4 -- alternativ select * from Studenten where Semester between 1 and 4 -- alternativ select * from Studenten where Semester in (1,2,3,4) -- 6. Liste alle Vorlesungen, mit Ethik im Titel: select * from Vorlesungen where upper(Titel) like '%ETHIK' -- 7.Liste Personalnummer, Name und Rang aller Professoren, -- absteigend sortiert nach Rang, dann auffsteigend sortiert nach Name: select PersNr, Name, Rang from Professoren order by Rang desc, Name asc -- 8. Liste alle verschiedenen Einträge in der Spalte Rang von Professoren: select distinct Rang from Professoren -- 9. Liste den Dozenten der Vorlesung Logik: select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenVon and Titel = 'Logik' -- 10. Liste die Namen der Studenten mit ihren Vorlesungstiteln: select Name, Titel from Studenten, hoeren, Vorlesungen where Studenten.MatrNr = hoeren.MatrNr and hoeren.VorlNr = Vorlesungen.VorlNr -- alternativ: select s.Name, v.Titel from Studenten s, hoeren h, Vorlesungen v where s.MatrNr = h.MatrNr and h.VorlNr = v.VorlNr -- 11. Liste die Namen der Assistenten, die für denselben Professor arbeiten, für den Aristoteles arbeitet: select a2.Name from Assistenten a1, Assistenten a2 where a2.boss = a1.boss and a1.name = 'Aristoteles' and a2.name != 'Aristoteles' -- 12. Liste die durchschnittliche Semesterzahl: select avg(Semester) from Studenten -- 13. Liste Geburtstage der Gehaltsklassenältesten (ohne Namen !): select Rang, max(GebDatum) as Ältester from Professoren group by Rang -- 14. Liste Summe der SWS pro Professor: select gelesenVon as PersNr, sum(SWS) as Lehrbelastung from Vorlesungen group by gelesenVon -- 15. Liste Summe der SWS pro Professor, sofern seine Durchschnitts-SWS größer als 3 ist: select gelesenVon as PersNr, sum(SWS) as Lehrbelastung from Vorlesungen group by gelesenVon having avg(SWS) > 3 -- 16. Liste Summe der SWS pro C4-Professor, sofern seine Durchschnitts-SWS größer als 3 ist: select Name, sum(SWS) from Vorlesungen, Professoren where gelesenVon = PersNr and Rang='C4' group by gelesenVon, Name having avg(SWS) > 3 -- 17. Liste alle Prüfungen, die als Ergebnis die schlechteste Note haben: select * from pruefen where Note = (select max(Note) from pruefen) -- 18. Liste alle Professoren zusammen mit ihrer Lehrbelastung: select PersNr, Name, (select sum(SWS) from Vorlesungen where gelesenVon = PersNr) as Lehrbelastung from Professoren -- 19. Liste alle Studenten, die älter sind als der jüngste Professor: select s.* from Studenten s where exists (select p.* from Professoren p where p.GebDatum > s.GebDatum) alternativ: select s.* from Studenten s where s.GebDatum < (select max(p.GebDatum) from Professoren p ) -- 20. Liste alle Assistenten, die für einen jüngeren Professor arbeiten: select a.* from Assistenten a, Professoren p where a.Boss = p.PersNr and a.GebDatum < p.GebDatum -- 21. Liste alle Studenten mit der Zahl ihrer Vorlesungen, sofern diese Zahl größer als 2 ist: select tmp.MatrNr, tmp.Name, tmp.VorlAnzahl from (select s.MatrNr, s.Name, count(*) as VorlAnzahl from Studenten s, hoeren h where s.MatrNr = h.MatrNr group by s.MatrNr, s.Name) tmp where tmp.VorlAnzahl > 2 -- 22. Liste die Namen und Geburtstage der Gehaltsklassenältesten: select p.Rang, p.Name, p.GebDatum from Professoren p, (select Rang, min(GebDatum) as maximum from Professoren group by Rang) tmp where p.Rang = tmp.Rang and p.GebDatum = tmp.maximum -- 23. Liste die Vereinigung von Professoren- und Assistenten-Namen: (select Name from Assistenten) union (select Name from Professoren) -- 24. Liste alle Professoren, die keine Vorlesung halten: select Name from Professoren where PersNr not in ( select gelesenVon from Vorlesungen ) alternativ: select Name from Professoren where not exists ( select * from Vorlesungen where gelesenVon = PersNr ) -- 25. Liste Studenten mit größter Semesterzahl: select Name from Studenten where Semester >= all (select Semester from Studenten ) -- 26. Liste Studenten, die nicht die größte Semesterzahl haben: select Name from Studenten where Semester < some (select Semester from Studenten ) -- 27. Liste solche Studenten, die alle 4-stündigen Vorlesungen hören: -- zunächst: alle Vorlesungen, die 28106 hört select * from hoeren h where h.matrnr=28106 -- dann: alle 4-std. Vorlesungen, die 28106 nicht hört select * from vorlesungen v where sws=4 and not exists (select * from hoeren h where v.vorlnr=h.vorlnr and h.matrnr=28106) -- dann: alle Studenten, die alle 4-std. Vorl. hören select s.name from studenten s where not exists (select * from vorlesungen v where sws=4 and not exists (select * from hoeren h where v.vorlnr=h.vorlnr and h.matrnr=s.matrnr)) -- --. Berechnung der transitiven Hülle einer rekursiven Relation -- -- (nur in Oracle): -- -- -- Liste alle Voraussetzungen für die Vorlesung 'Der Wiener Kreis': -- -- select Titel -- from Vorlesungen -- where VorlNr in ( -- select Vorgaenger -- from voraussetzen -- connect by Nachfolger = prior Vorgaenger -- start with Nachfolger = (select VorlNr -- from Vorlesungen -- where Titel = 'Der Wiener Kreis' -- ) -- )