Exkurs - Daten automatisch erzeugen
Für Experten - Daten automatisch einfügen
Vielleicht willst du gar nicht nur die (wenigen) Ozeane speichern, sondern zunächst die schon vorhandenen Einträge für die Meere übertragen. Das ist von Hand relativ mühsam und SQL kann dir dabei helfen:
Nachdem du wie im letzten Schritt eine Tabelle erzeugt hast, kannst du diese mit folgendem SQL-Befehl füllen lassen:
INSERT INTO ozean (Name)
SELECT DISTINCT Meer
FROM fluss
WHERE Meer IS NOT NULL
Aufgabe 1
Probiere es aus und schaue dir das Ergebnis an.
Erkläre die einzelnen Zeilen!
Das Ergebnis sieht so aus:
Das bedeuten die Zeilen im SQL:
INSERT INTO ozean (Name)
SELECT DISTINCT Meer
FROM fluss
WHERE Meer IS NOT NULL
-
INSERT...
fügt neue Datensätze in die Tabelleozean
ein - und füllt hier nur das AttributName
. -
SELECT...
liest alle Datensätze (nur das AttributMeer
) ... - ...aus der Tabelle
fluss
aus. -
WHERE...
verhindert, dass auch Datensätze berücksichtigt werden, für das Meer gar nicht eingetragen ist.
Jeder Datensatz aus dem SELECT
-Befehl wird damit automatisch in die ozean
-Tabelle eingefügt.
Da das Attribut OZNR
aus der Tabelle ozean
nicht angegeben wird, füllt das Datenbanksystem
automatisch Werte ein (Erinnere dich an die Anweisung "auto increment" für den Primärschlüssel).
Für Experten - Fremdschlüssel automatisch füllen
Ganz ähnlich wie das INSERT
in SQL gibt es auch den Befehl UPDATE
.
Diesen kannst du dazu benutzen, das neue Fremdschlüssel-Attribut der fluss
-Tabelle zu füllen:
UPDATE fluss SET OZNR=
(SELECT OZNR
FROM ozean
WHERE ozean.Name = fluss.Meer
)