Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:sql_island_adventure

SQL Island Adventure

Hier sind die ersten Schritte für das „SQL Island Adventure“.

Die ersten Runden...


Nach einem Flugzeugabsturz stellst du fest, dass du der einzige Überlebende bist. 
Du landest auf einer Insel, erkundest sie und findest einige Dörfer:
> SELECT * FROM dorf
dorfnr	name	haeuptling
1	Affenstadt	1
2	Gurkendorf	6
3	Zwiebelhausen	13
Weiter

Du triffst während deiner Erkundung auf viele Bewohner der Insel. Welche?

> select * from bewohner;
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
1	Paul Backmann	2	m	Baecker	850	friedlich
2	Ernst Peng	3	m	Waffenschmied	280	friedlich
3	Rita Ochse	1	w	Baecker	350	friedlich
4	Carl Ochse	1	m	Kaufmann	250	friedlich
5	Dirty Dieter	3	m	Schmied	650	boese
6	Gerd Schlachter	2	m	Metzger	4850	boese
7	Peter Schlachter	3	m	Metzger	3250	boese
8	Arthur Schneiderpaule	2	m	Pilot	490	gefangen
9	Tanja Trommler	1	w	Baecker	550	boese
10	Peter Trommler	1	m	Schmied	600	friedlich
11	Dirty Doerthe	3	w	Erntehelfer	10	boese
12	Otto Armleuchter	2	m	Haendler	680	friedlich
13	Fritz Dichter	2	m	Hoerbuchautor	420	friedlich
14	Enrico Zimmermann	2	m	Waffenschmied	510	boese
15	Helga Rasenkopf	2	w	Haendler	680	friedlich
16	Irene Hutmacher	1	w	Haendler	770	boese
17	Erich Rasenkopf	3	m	Metzger	990	friedlich
18	Rudolf Gaul	3	m	Hufschmied	390	friedlich
19	Anna Flysh	2	w	Metzger	2280	friedlich
Yeah!

Deine Erkundung hat dich hungrig gemacht. Lass uns eine Metzgerei suchen 
und eine Gratis-Wurstscheibe schnorren!
> SELECT * FROM bewohner WHERE beruf = 'Metzger'
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
6	Gerd Schlachter	2	m	Metzger	4850	boese
7	Peter Schlachter	3	m	Metzger	3250	boese
17	Erich Rasenkopf	3	m	Metzger	990	friedlich
19	Anna Flysh	2	w	Metzger	2280	friedlich
Weiter

Juhu, Erich gibt uns eine Scheibe Wurst! Bei deiner weiteren Reise solltest 
du jedoch beachten, dass nicht alle Bewohner friedlich sind. Da du nicht 
bewaffnet bist, solltest du dich zunächst von den bösen Bewohnern fernhalten. 
Welche Bewohner sind friedlich?

> select * from bewohner where status="friedlich";
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
1	Paul Backmann	2	m	Baecker	850	friedlich
2	Ernst Peng	3	m	Waffenschmied	280	friedlich
3	Rita Ochse	1	w	Baecker	350	friedlich
4	Carl Ochse	1	m	Kaufmann	250	friedlich
10	Peter Trommler	1	m	Schmied	600	friedlich
12	Otto Armleuchter	2	m	Haendler	680	friedlich
13	Fritz Dichter	2	m	Hoerbuchautor	420	friedlich
15	Helga Rasenkopf	2	w	Haendler	680	friedlich
17	Erich Rasenkopf	3	m	Metzger	990	friedlich
18	Rudolf Gaul	3	m	Hufschmied	390	friedlich
19	Anna Flysh	2	w	Metzger	2280	friedlich
Yeah!

Sehr gut! Nun suche dir einen friedlichen Waffenschmied, der dir ein 
Schwert schmieden kann. 
(Hinweis: Bedingungen im WHERE-Teil kannst du mit AND verknüpfen)

> select * from bewohner where status="friedlich" and beruf="Waffenschmied";
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
2	Ernst Peng	3	m	Waffenschmied	280	friedlich
Yeah!

Hm, das sind sehr wenige. Vielleicht gibt es noch andere Schmiede, 
z.B. Hufschmied, Schmied, Waffenschmied, etc. Probiere beruf LIKE '%schmied', 
um alle Bewohner zu finden, deren Beruf mit 'schmied' endet 
(% ist ein Platzhalter für beliebig viele Zeichen).

> select * from bewohner where status="friedlich" and beruf like "%schmied";
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
2	Ernst Peng	3	m	Waffenschmied	280	friedlich
10	Peter Trommler	1	m	Schmied	600	friedlich
18	Rudolf Gaul	3	m	Hufschmied	390	friedlich
Yeah!

Sehr gut! Diese Schmiede kommen alle in Frage. Du gehst sie nacheinader besuchen, 
um sie zu fragen, ob sie dir ein Schwert schmieden können.
Während deiner Erkundungstour triffst du auf Paul, einen Bürgermeister. Er trägt
dich als Bewohner in sein Dorf ein. Da er dich nicht nach deinem Namen gefragt hat, 
nennt er dich "Fremder".
> INSERT INTO bewohner (name, dorfnr, geschlecht, beruf, gold, status) VALUES ('Fremder', 2, '?', '?', 0, '?')
OK Weiter

Finde deine bewohnernr heraus! (Tipp: Der * in den vorherigen Abfragen stand 
immer für "alle Spalten". Stattdessen kannst du aber auch eine oder mehrere 
mit Komma getrennte Spaltennamen angeben.

> select bewohnernr from bewohner where name="Fremder";
bewohnernr
20
Yeah!

Nun besuchst du einen der Schmiede, die du dir rausgesucht hast. Er sagt dir, 
dass ein Schwert 150 Gold kostet. Wie viel Gold hast du momentan?

> select gold from bewohner where bewohnernr=20;
gold
0
Yeah!

Mist! Um an Gold zu kommen, müsstest du arbeiten... Obwohl! Man erzählt sich, 
dass auf der Insel viele Gegenstände herumliegen, die niemandem gehören. 
Diese Gegenstände kannst du einsammeln und an Händler verkaufen. Liste alle 
Gegenstände auf, die niemandem gehören. 
Tipp: Herrenlose Gegenstände erkennt man an WHERE besitzer IS NULL.

> select * from gegenstand where besitzer is NULL;
gegenstand	besitzer
Teekanne	
Ring	
Kaffeetasse	
Eimer	
Pappkarton	
Gluehbirne	
Yeah!

Lasst uns die Kaffeetasse einsammeln. Eine Kaffeetasse kann 
man immer mal gebrauchen.
> UPDATE gegenstand SET besitzer = 20 WHERE gegenstand = 'Kaffeetasse'
OK Weiter

Kennst du einen Trick, wie wir alle Gegenstände auf einmal einsammeln 
können, die niemandem gehören?

> update gegenstand set besitzer=20 where besitzer is NULL;
OKYeah!

Yeah! Zeige mir nun alle Gegenstände, die wir haben!

> select * from gegenstand where besitzer=20;
gegenstand	besitzer
Teekanne	20
Ring	20
Kaffeetasse	20
Eimer	20
Pappkarton	20
Gluehbirne	20
Yeah!

Finde friedliche Bewohner mit dem Beruf Haendler oder Kaufmann. 
Eventuell möchten sie etwas von uns kaufen. (Hinweis: Achte 
bei AND- und OR-Verknüpfungen auf korrekte Klammerung)

Wie geht die Geschichte weiter?…

SQL Island - Komplettlösung

Inhalte der Tabellen

Die Inhalte der Tabellen.

DORF (dorfnr, name, haeuptling) 
BEWOHNER (bewohnernr, name, dorfnr, geschlecht, beruf, gold, status) 
GEGENSTAND (gegenstand, besitzer) 

> SELECT * FROM dorf

dorfnr	name	haeuptling
1	Affenstadt	1
2	Gurkendorf	6
3	Zwiebelhausen	13

> SELECT * FROM bewohner
bewohnernr	name	dorfnr	geschlecht	beruf	gold	status
1	Paul Backmann	2	m	Baecker	850	friedlich
2	Ernst Peng	3	m	Waffenschmied	280	friedlich
3	Rita Ochse	1	w	Baecker	350	friedlich
4	Carl Ochse	1	m	Kaufmann	250	friedlich
5	Dirty Dieter	3	m	Schmied	650	boese
6	Gerd Schlachter	2	m	Metzger	4850	boese
7	Peter Schlachter	3	m	Metzger	3250	boese
8	Arthur Schneiderpaule	2	m	Pilot	490	gefangen
9	Tanja Trommler	1	w	Baecker	550	boese
10	Peter Trommler	1	m	Schmied	600	friedlich
11	Dirty Doerthe	3	w	Erntehelfer	10	boese
12	Otto Armleuchter	2	m	Haendler	680	friedlich
13	Fritz Dichter	2	m	Hoerbuchautor	420	friedlich
14	Enrico Zimmermann	2	m	Waffenschmied	510	boese
15	Helga Rasenkopf	2	w	Haendler	680	friedlich
16	Irene Hutmacher	1	w	Haendler	770	boese
17	Erich Rasenkopf	3	m	Metzger	990	friedlich
18	Rudolf Gaul	3	m	Hufschmied	390	friedlich
19	Anna Flysh	2	w	Metzger	2280	friedlich

> SELECT * FROM gegenstand
gegenstand	besitzer
Teekanne	
Spazierstock	5
Hammer	2
Ring	
Kaffeetasse	
Eimer	
Seil	17
Pappkarton	
Gluehbirne	

schule/sql_island_adventure.txt · Zuletzt geändert: 2017-04-19 08:39 von 127.0.0.1