← Kap. 8 · Tabellen verbinden – Fremdschlüssel und Join

✏️ Übungen zu Kap. 8 · Tabellen verbinden – Fremdschlüssel und Join

Freiwillig – such dir aus, was du üben willst.

Training: Joins mit terra3

Noch mehr Abfragen über mehrere Tabellen – mit Ländern, Orten und Kontinenten.

Übung 1 🗄 terra (mit Schlüsseln)
Welche Orte haben mehr als 1 Million Einwohner und liegen in Ländern mit weniger als 10 Millionen Einwohnern? Gib den Namen des Ortes, seine Einwohner und den Namen des Landes aus.
Datenbankschema „terra (mit Schlüsseln)“ anzeigen
kontinent (7 Datensätze)
  • 🔑 KNR text
  • Name text
  • Flaeche numeric
  • Einwohner numeric
  • AnteilErdoberflaeche numeric
land (197 Datensätze)
  • 🔑 LNR text
  • Name text
  • KNR text → kontinent.KNR
  • Einwohner numeric
  • Flaeche numeric
  • HauptONR text → ort.ONR
ort (27092 Datensätze)
  • 🔑 ONR text
  • Name text
  • LNR text → land.LNR
  • Landesteil text
  • Einwohner integer
  • Breite numeric
  • Laenge numeric

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Übung 2 🗄 terra (mit Schlüsseln)
Erzeuge eine Tabelle mit den Hauptstädten: Gib für jedes Land seinen Namen und den Namen seiner Hauptstadt aus.
Datenbankschema „terra (mit Schlüsseln)“ anzeigen
kontinent (7 Datensätze)
  • 🔑 KNR text
  • Name text
  • Flaeche numeric
  • Einwohner numeric
  • AnteilErdoberflaeche numeric
land (197 Datensätze)
  • 🔑 LNR text
  • Name text
  • KNR text → kontinent.KNR
  • Einwohner numeric
  • Flaeche numeric
  • HauptONR text → ort.ONR
ort (27092 Datensätze)
  • 🔑 ONR text
  • Name text
  • LNR text → land.LNR
  • Landesteil text
  • Einwohner integer
  • Breite numeric
  • Laenge numeric

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Joins in den anderen Datenbanken

Auch die Schule, der Sportverein und die Buchhandlung verteilen ihre Daten auf mehrere Tabellen. Im Schema siehst du an den Pfeilen →, welcher Fremdschlüssel auf welchen Primärschlüssel verweist.

Übung 3 🗄 Schule
Wer ist Klassenlehrerin oder Klassenlehrer der Klasse 7c? Gib Vorname und Nachname der Lehrkraft aus.
Datenbankschema „Schule“ anzeigen
lehrer (22 Datensätze)
  • 🔑 LehrerID integer
  • Kuerzel varchar(4)
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Fach1 varchar(20)
  • Fach2 varchar(20)
klasse (16 Datensätze)
  • 🔑 Bezeichnung varchar(3)
  • Stufe integer
  • Raum varchar(5)
  • LehrerID integer → lehrer.LehrerID
schueler (359 Datensätze)
  • 🔑 SchuelerID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsdatum date
  • Wohnort varchar(30)
  • Klasse varchar(3) → klasse.Bezeichnung
note (2139 Datensätze)
  • 🔑 NoteID integer
  • SchuelerID integer → schueler.SchuelerID
  • Fach varchar(20)
  • Art varchar(20)
  • Datum date
  • Note integer
  • LehrerID integer → lehrer.LehrerID
ag (8 Datensätze)
  • 🔑 AGID integer
  • Name varchar(30)
  • Wochentag varchar(10)
  • Raum varchar(5)
  • LehrerID integer → lehrer.LehrerID
ag_teilnahme (228 Datensätze)
  • 🔑 SchuelerID integer → schueler.SchuelerID
  • 🔑 AGID integer → ag.AGID

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Übung 4 🗄 Buchhandlung
Gib die Titel aller Krimis mit Vor- und Nachname der Autorin bzw. des Autors aus.
Datenbankschema „Buchhandlung“ anzeigen
autor (20 Datensätze)
  • 🔑 AutorID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsjahr integer
  • Land varchar(30)
verlag (7 Datensätze)
  • 🔑 VerlagID integer
  • Name varchar(40)
  • Ort varchar(30)
buch (112 Datensätze)
  • 🔑 ISBN varchar(17)
  • Titel varchar(60)
  • AutorID integer → autor.AutorID
  • VerlagID integer → verlag.VerlagID
  • Genre varchar(20)
  • Jahr integer
  • Seiten integer
  • Preis decimal(5,2)
  • Bestand integer
kunde (70 Datensätze)
  • 🔑 KundeID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Wohnort varchar(30)
bestellung (180 Datensätze)
  • 🔑 BestellID integer
  • KundeID integer → kunde.KundeID
  • Datum date
bestellposten (299 Datensätze)
  • 🔑 BestellID integer → bestellung.BestellID
  • 🔑 ISBN varchar(17) → buch.ISBN
  • Menge integer

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Übung 5 🗄 Sportverein
Gib für jede Mannschaft des Sportvereins ihren Namen sowie Vorname und Nachname der Trainerin bzw. des Trainers aus.
Datenbankschema „Sportverein“ anzeigen
mitglied (160 Datensätze)
  • 🔑 MitgliedID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsjahr integer
  • Wohnort varchar(30)
  • Eintritt date
  • Beitrag decimal(5,2)
mannschaft (9 Datensätze)
  • 🔑 MannschaftID integer
  • Name varchar(40)
  • Sportart varchar(20)
  • Altersklasse varchar(20)
  • Liga varchar(30)
  • TrainerID integer → mitglied.MitgliedID
spieler (124 Datensätze)
  • 🔑 MitgliedID integer → mitglied.MitgliedID
  • 🔑 MannschaftID integer → mannschaft.MannschaftID
  • Trikotnummer integer
  • Position varchar(20)
spiel (61 Datensätze)
  • 🔑 SpielID integer
  • MannschaftID integer → mannschaft.MannschaftID
  • Datum date
  • Gegner varchar(40)
  • Heimspiel integer
  • PunkteEigene integer
  • PunkteGegner integer

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Freitext

Stell dir vor, du willst folgende Dinge in einer Datenbanktabelle speichern: die in Deutschland zugelassenen Autos, alle zurzeit erhältlichen Bücher, alle Schülerinnen und Schüler deiner Schule und die Lehrkräfte deiner Schule. Welche Primärschlüssel könnte man jeweils wählen? Wo sollte man einen künstlichen Primärschlüssel einfügen?

💡 Zum Speichern deiner Antwort bitte einloggen.

Für Expertinnen und Experten

Statt die Joinbedingung in den WHERE-Teil zu schreiben, kann man sie auch direkt im FROM-Teil angeben. Das Ergebnis ist dasselbe:

SELECT land.Name, kontinent.Name
  FROM land JOIN kontinent ON land.KNR = kontinent.KNR
Expertenaufgabe 1 🗄 Buchhandlung
Schreibe die Abfrage aus Übung 4 (Krimis mit Autorinnen und Autoren) mit JOIN … ON.
Datenbankschema „Buchhandlung“ anzeigen
autor (20 Datensätze)
  • 🔑 AutorID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsjahr integer
  • Land varchar(30)
verlag (7 Datensätze)
  • 🔑 VerlagID integer
  • Name varchar(40)
  • Ort varchar(30)
buch (112 Datensätze)
  • 🔑 ISBN varchar(17)
  • Titel varchar(60)
  • AutorID integer → autor.AutorID
  • VerlagID integer → verlag.VerlagID
  • Genre varchar(20)
  • Jahr integer
  • Seiten integer
  • Preis decimal(5,2)
  • Bestand integer
kunde (70 Datensätze)
  • 🔑 KundeID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Wohnort varchar(30)
bestellung (180 Datensätze)
  • 🔑 BestellID integer
  • KundeID integer → kunde.KundeID
  • Datum date
bestellposten (299 Datensätze)
  • 🔑 BestellID integer → bestellung.BestellID
  • 🔑 ISBN varchar(17) → buch.ISBN
  • Menge integer

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Expertenaufgabe 2 🗄 Schule
Wer ist in der Physik-AG? Gib Vorname, Nachname und Klasse der Teilnehmerinnen und Teilnehmer aus.
Datenbankschema „Schule“ anzeigen
lehrer (22 Datensätze)
  • 🔑 LehrerID integer
  • Kuerzel varchar(4)
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Fach1 varchar(20)
  • Fach2 varchar(20)
klasse (16 Datensätze)
  • 🔑 Bezeichnung varchar(3)
  • Stufe integer
  • Raum varchar(5)
  • LehrerID integer → lehrer.LehrerID
schueler (359 Datensätze)
  • 🔑 SchuelerID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsdatum date
  • Wohnort varchar(30)
  • Klasse varchar(3) → klasse.Bezeichnung
note (2139 Datensätze)
  • 🔑 NoteID integer
  • SchuelerID integer → schueler.SchuelerID
  • Fach varchar(20)
  • Art varchar(20)
  • Datum date
  • Note integer
  • LehrerID integer → lehrer.LehrerID
ag (8 Datensätze)
  • 🔑 AGID integer
  • Name varchar(30)
  • Wochentag varchar(10)
  • Raum varchar(5)
  • LehrerID integer → lehrer.LehrerID
ag_teilnahme (228 Datensätze)
  • 🔑 SchuelerID integer → schueler.SchuelerID
  • 🔑 AGID integer → ag.AGID

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.

Expertenaufgabe 3 🗄 Buchhandlung
Gib für alle Bestellposten mit mindestens 5 Exemplaren Vorname und Nachname der Kundin bzw. des Kunden, Titel des Buches, Menge und Gesamtpreis (Menge mal Preis) aus.
Datenbankschema „Buchhandlung“ anzeigen
autor (20 Datensätze)
  • 🔑 AutorID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Geburtsjahr integer
  • Land varchar(30)
verlag (7 Datensätze)
  • 🔑 VerlagID integer
  • Name varchar(40)
  • Ort varchar(30)
buch (112 Datensätze)
  • 🔑 ISBN varchar(17)
  • Titel varchar(60)
  • AutorID integer → autor.AutorID
  • VerlagID integer → verlag.VerlagID
  • Genre varchar(20)
  • Jahr integer
  • Seiten integer
  • Preis decimal(5,2)
  • Bestand integer
kunde (70 Datensätze)
  • 🔑 KundeID integer
  • Vorname varchar(30)
  • Nachname varchar(30)
  • Wohnort varchar(30)
bestellung (180 Datensätze)
  • 🔑 BestellID integer
  • KundeID integer → kunde.KundeID
  • Datum date
bestellposten (299 Datensätze)
  • 🔑 BestellID integer → bestellung.BestellID
  • 🔑 ISBN varchar(17) → buch.ISBN
  • Menge integer

🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)

Struktur vorgeben:

Ohne Anmeldung wird deine Abfrage nicht gespeichert.