summaryrefslogtreecommitdiff
path: root/ws2015/dbs/blaetter/05/abgabe.md
blob: 046a2702989534d6d142340ecbe1928b64a5beb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
---
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;
~~~