Institut für Informatik LV "Grundlagen der Informatik" Übungsaufgaben zu Datenbanken (SQL) Aufgabenkomplex: Datenbanken (Die relationale Datenbanksprache SQL) - Lösungen - Zunächst: Vollständige Ausgabe der drei Tabellen (Relationen) der Datenbank PERSONAL: SELECT * FROM besch; SELECT * FROM abt; SELECT * FROM gehstufe; 1.1 SELECT abtnr, name, geh FROM besch; 1.2 SELECT * FROM besch ORDER BY abtnr DESC, name; 1.3 SELECT name, geh, taet FROM besch WHERE geh > 5000; 1.4 SELECT taet FROM besch WHERE name = 'SCHMIDT'; 1.5a) SELECT ort FROM besch, abt WHERE name = 'BLASCHE' AND besch.abtnr = abt.abtnr; 1.5.b) SELECT ort FROM abt WHERE abtnr = (SELECT abtnr FROM besch WHERE name = 'BLASCHE'); 1.6 SELECT DISTINCT taet FROM besch; 1.7 SELECT * FROM besch WHERE (taet = 'VERKAEUFER' OR taet = 'SACHB.') AND geh >3400; 1.8 SELECT name, geh, abtname FROM besch, abt WHERE taet = 'LEITER' AND besch.abtnr = abt.abtnr; 1.9 SELECT name FROM besch, gehstufe WHERE stufe = 5 AND geh BETWEEN von AND bis; Oder ohne "BETWEEN": SELECT name FROM besch, gehstufe WHERE stufe = 5 AND geh >= von AND geh <= bis; 1.10 SELECT count(*) "Anzahl" FROM besch; 1.11 SELECT abtnr, MAX(geh), MIN(geh), AVG(geh) FROM besch GROUP BY abtnr; 1.12 INSERT INTO abt VALUES (50, 'ENTWURF', 'PARIS'); 1 Institut für Informatik LV "Grundlagen der Informatik" 1.13 UPDATE besch SET geh = geh * 1.2 WHERE geh < 3000; 1.14 UPDATE abt SET abtname ='DESIGN' WHERE abtname = 'ENTWURF'; 1.15 DELETE FROM abt WHERE abtnr = 50; 1.16 DROP TABLE abt; Übungsaufgaben zu Datenbanken (SQL) (Falls Sie zuvor 1.16 ausgeführt haben, müssen Sie jetzt erneut @pers abarbeiten, um die drei Tabellen wieder aufzubauen.) 1.17 SELECT abtname "Begriffe" FROM abt UNION SELECT taet FROM besch ORDER BY 1; 1.18 SELECT mitarb.name "Mitarbeiter", leiter.name "Leiter" FROM besch mitarb, besch leiter WHERE mitarb.ltr = leiter.bnr; 1.19 SELECT name FROM besch WHERE zuschl IS NULL UNION SELECT name FROM besch WHERE zuschl=0; ( NULL Æ Leereintrag in zuschl ) (0 oder in anderer Form: SELECT name FROM besch WHERE zuschl IS NULL OR zuschl=0; 1.20 SELECT DISTINCT taet FROM besch WHERE abtnr = 30 AND taet IN (SELECT taet FROM besch WHERE abtnr = 20 ); 1.21 SELECT DISTINCT taet FROM besch WHERE abtnr = 30 AND taet NOT IN (SELECT taet FROM besch WHERE abtnr = 20 ); 2 Æ Eintrag 0 in zuschl ) Institut für Informatik LV "Grundlagen der Informatik" Übungsaufgaben zu Datenbanken (SQL) 1.22 SELECT name FROM besch, gehstufe WHERE taet = 'SACHB.' AND (stufe = 1 OR stufe = 2) AND geh BETWEEN von AND bis; 1.23 SELECT * FROM besch WHERE geh > ANY (SELECT geh FROM besch WHERE abtnr = 20); Oder in anderer Form: SELECT * FROM besch WHERE geh > (SELECT MIN(geh) FROM besch WHERE abtnr = 20); 1.24 SELECT * FROM besch WHERE geh > ALL (SELECT geh FROM besch WHERE abtnr = 20); Oder in anderer Form: SELECT * FROM besch WHERE geh > (SELECT MAX(geh) FROM besch WHERE abtnr = 20); 1.25 SELECT abtnr FROM besch GROUP BY abtnr HAVING COUNT(*)>4; (GROUP … Zusammenfassung aller Zeilen mit gleichen Attributwerten) (HAVING ... Auswahl von Zeilen aus Gruppen) Oder in komplizierterer Form: SELECT besch.abtnr FROM abt, besch WHERE abt.abtnr = besch.abtnr GROUP BY besch.abtnr HAVING count(*) > 4; (02/2004) 3