--- header-includes: - \lstset{frame=single, breaklines=true, postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}} --- # Anfragen in SQL a) ~~~ {.sql .numberLines} SELECT pname FROM P WHERE ort = "Berlin" ~~~ b) ~~~ {.sql .numberLines} SELECT T.tnr FROM T, L, LTP WHERE LTP.tnr = T.tnr AND LTP.lnr = L.lnr AND L.lname = "Meier" ~~~ c) ~~~ {.sql .numberLines} SELECT T.farbe FROM T, P, LTP WHERE LTP.pnr = P.pnr AND LTP.tnr = T.tnr AND P.ort = "Berlin" ~~~ d) Ich nehme hier und im folgenden an, dass mit *P2* und *P3* die Projekte mit Nummer 2 und 3 gemeint sind---sind *P2* und *P3* Namen ist die Lösung komplett analog. ~~~ {.sql .numberLines} SELECT T.name, T.farbe FROM T, P, LTP \ WHERE LTP.pnr = P.pnr AND LTP.tnr = T.tnr AND ( P.pnr = 2 OR P.pnr = 3 ) ~~~ # Änderungsoperationen in SQL a) ~~~ {.sql .numberLines} INSERT INTO L (lname, status, sitz) VALUES ("Maier", 10, "Neuried"); INSERT INTO LTP (lnr, tnr, pnr, menge) SELECT lnr, 4 as tnr, 8 as pnr, 200 as menge FROM L WHERE lname = "Maier"; -- lname ist schlüsselkanidat; ansonsten muss Datenbankspezifische Funktionalität genutzt werden um lnr zu ermitteln. COMMIT; ~~~ b) ~~~ {.sql .numberLines} UPDATE LTP SET menge = menge * 3 WHERE pnr = 4; COMMIT; ~~~ c) ~~~ {.sql .numberLines} DELETE FROM LTP WHERE lnr = 4; DELETE FROM L WHERE lnr = 4; COMMIT; ~~~