Lösungen zum SQL-Übungsblatt von Walter Ebner 1) create table
Transcription
Lösungen zum SQL-Übungsblatt von Walter Ebner 1) create table
Lösungen zum SQL-Übungsblatt von Walter Ebner 1) create table hältAb ( SV-Nr int references Lektor(SV-Nr), LV-Nr int references Lehrveranstaltung(LV-Nr), SWS int, Primary Key (SV-Nr, LV-Nr) ); 2) select * from Hörsaal where Größe>50 and Bezeichnung like '____' order by gebäude desc, bezeichnung desc; 3) select * from Lehrveranstaltung where maxTeiln between 20 and 30; oder select * from Lehrveranstaltung where maxTeiln>=20 and maxTeiln<=30; 4) delete from lektor where berufsbez='Univ.Doz.' or Name like 'S%' and Name not like '%er'; 5) Select Abteilung from Lektor group by Abteilung having count(*)>=5; 6) Select Abteilung, count(*) as Mitarbeiteranzahl from Lektor where Abteilung like 'M%' group by Abteilung; Das 'as Mitarbeiteranzahl' ist nicht notwendig. Dient aber der besseren Lesbarkeit des Ergebnisses. 7) Select avg(Größe) as Durchschnittliche_Hörsaalgröße from Hörsaal; 8) Select bezeichnung from Hörsaal where Größe=(select max(Größe) from Hörsaal); 9) select distinct sv-nr, name from lektor natural join hältAb where BerufsBez='Univ.Prof.'; 10) select LV-Nr, count(*) from besucht group by LV-Nr having count(*) between 30 and 40; 11) select Studium, count(*) from student group by Studium having count(*)> 2000; 12) select Gebäude, count(*) as Anzahl from Hörsaal group by Gebäude order by count(*) desc; 13) 1 select Abteilung, sum(SWS) from lektor, hältAb where lektor.sv-nr=hältAb.sv-nr group by abteilung having sum(SWS)>100; select Abteilung, sum(SWS) from lektor natural join hältAb group by abteilung having sum(SWS)>100; select Abteilung, sum(SWS) from lektor join hältAb using(SV-Nr) group by abteilung having sum(SWS)>100; 14) select lektor.sv-nr, lektor.name from lektor, hältAb, lv where lektor.svnr=hältAb.sv-nr and hältAb.LV-Nr=lv.LV-Nr and findetStatt='Audi.Max.'; select lektor.sv-nr, lektor.name from lektor join hältAb using(SV-Nr) join lv using(LV-Nr) where findetStatt='Audi.Max.'; Achtung: in Lektor und LV gibts das Attr. Name. D.h. man kann nicht einfach mit natural join joinen. 15) select matr-nr, student.name from student, besucht, hältAb, lektor where student.Matr-Nr=besucht.Matr-Nr and besucht.LV-Nr=hältAb.LV-Nr and hältAb.SVNr=Lektor.SV-Nr and Studium='Winf' and lektor.name='Panny' and berufsbez='Univ.Prof.'; oder select matr-nr, student.name from student join besucht using(Matr-Nr) join hältAb using(LV-Nr) join lektor (SV-Nr) where Studium='Winf' and lektor.name='Panny' and berufsbez='Univ.Prof.'; 16) select matr-nr, student.name from student, besucht, lehrveranstaltung, hältAb, lektor where student.Matr-Nr=besucht.Matr-Nr and besucht.LVNr=lehrveranstaltung.LV-Nr and lehrveranstaltung.LV-Nr=hältAb.LV-Nr and hältAb.SV-Nr=Lektor.SV-Nr and Lehrveranstaltung.name='Datenbanksysteme' and abteilung='Informationswirtschaft'; oder select matr-nr, student.name from student join besucht using(Matr-Nr) join lehrveranstaltung using (LV-Nr) join hältAb using(LV-Nr) join lektor (SV-Nr) where Lehrveranstaltung.name='Datenbanksysteme' and abteilung='Informationswirtschaft'; 17) select name from lv where lv-nr in (select setzt-voraus-lv-nr from voraussetzung where lv-nr in (select lv-nr from lv where name='Rechnerpraktikum') ); 18) (Select Bezeichnung from Hörsaal) except (select findetstatt from Lehrveranstaltung); oder 2 select Bezeichnung from Hörsaal where Bezeichnung not in (select findetstatt from Lehrveranstaltung) 19) Delete from student löscht alle Zeilen aus der Student Tabelle. Drop Table Student löscht nicht nur die Einträge in der Tabelle sondern auch die Tabellenstruktur (die Definition der Tabelle). 3