✏️ Ü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.
Datenbankschema „terra (mit Schlüsseln)“ anzeigen
- 🔑 KNR text
- Name text
- Flaeche numeric
- Einwohner numeric
- AnteilErdoberflaeche numeric
- 🔑 LNR text
- Name text
- KNR text → kontinent.KNR
- Einwohner numeric
- Flaeche numeric
- HauptONR text → ort.ONR
- 🔑 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)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „terra (mit Schlüsseln)“ anzeigen
- 🔑 KNR text
- Name text
- Flaeche numeric
- Einwohner numeric
- AnteilErdoberflaeche numeric
- 🔑 LNR text
- Name text
- KNR text → kontinent.KNR
- Einwohner numeric
- Flaeche numeric
- HauptONR text → ort.ONR
- 🔑 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)
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.
Datenbankschema „Schule“ anzeigen
- 🔑 LehrerID integer
- Kuerzel varchar(4)
- Vorname varchar(30)
- Nachname varchar(30)
- Fach1 varchar(20)
- Fach2 varchar(20)
- 🔑 Bezeichnung varchar(3)
- Stufe integer
- Raum varchar(5)
- LehrerID integer → lehrer.LehrerID
- 🔑 SchuelerID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsdatum date
- Wohnort varchar(30)
- Klasse varchar(3) → klasse.Bezeichnung
- 🔑 NoteID integer
- SchuelerID integer → schueler.SchuelerID
- Fach varchar(20)
- Art varchar(20)
- Datum date
- Note integer
- LehrerID integer → lehrer.LehrerID
- 🔑 AGID integer
- Name varchar(30)
- Wochentag varchar(10)
- Raum varchar(5)
- LehrerID integer → lehrer.LehrerID
- 🔑 SchuelerID integer → schueler.SchuelerID
- 🔑 AGID integer → ag.AGID
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Buchhandlung“ anzeigen
- 🔑 AutorID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsjahr integer
- Land varchar(30)
- 🔑 VerlagID integer
- Name varchar(40)
- Ort varchar(30)
- 🔑 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
- 🔑 KundeID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Wohnort varchar(30)
- 🔑 BestellID integer
- KundeID integer → kunde.KundeID
- Datum date
- 🔑 BestellID integer → bestellung.BestellID
- 🔑 ISBN varchar(17) → buch.ISBN
- Menge integer
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Sportverein“ anzeigen
- 🔑 MitgliedID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsjahr integer
- Wohnort varchar(30)
- Eintritt date
- Beitrag decimal(5,2)
- 🔑 MannschaftID integer
- Name varchar(40)
- Sportart varchar(20)
- Altersklasse varchar(20)
- Liga varchar(30)
- TrainerID integer → mitglied.MitgliedID
- 🔑 MitgliedID integer → mitglied.MitgliedID
- 🔑 MannschaftID integer → mannschaft.MannschaftID
- Trikotnummer integer
- Position varchar(20)
- 🔑 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)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
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?
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
JOIN … ON.Datenbankschema „Buchhandlung“ anzeigen
- 🔑 AutorID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsjahr integer
- Land varchar(30)
- 🔑 VerlagID integer
- Name varchar(40)
- Ort varchar(30)
- 🔑 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
- 🔑 KundeID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Wohnort varchar(30)
- 🔑 BestellID integer
- KundeID integer → kunde.KundeID
- Datum date
- 🔑 BestellID integer → bestellung.BestellID
- 🔑 ISBN varchar(17) → buch.ISBN
- Menge integer
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Schule“ anzeigen
- 🔑 LehrerID integer
- Kuerzel varchar(4)
- Vorname varchar(30)
- Nachname varchar(30)
- Fach1 varchar(20)
- Fach2 varchar(20)
- 🔑 Bezeichnung varchar(3)
- Stufe integer
- Raum varchar(5)
- LehrerID integer → lehrer.LehrerID
- 🔑 SchuelerID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsdatum date
- Wohnort varchar(30)
- Klasse varchar(3) → klasse.Bezeichnung
- 🔑 NoteID integer
- SchuelerID integer → schueler.SchuelerID
- Fach varchar(20)
- Art varchar(20)
- Datum date
- Note integer
- LehrerID integer → lehrer.LehrerID
- 🔑 AGID integer
- Name varchar(30)
- Wochentag varchar(10)
- Raum varchar(5)
- LehrerID integer → lehrer.LehrerID
- 🔑 SchuelerID integer → schueler.SchuelerID
- 🔑 AGID integer → ag.AGID
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.
Datenbankschema „Buchhandlung“ anzeigen
- 🔑 AutorID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Geburtsjahr integer
- Land varchar(30)
- 🔑 VerlagID integer
- Name varchar(40)
- Ort varchar(30)
- 🔑 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
- 🔑 KundeID integer
- Vorname varchar(30)
- Nachname varchar(30)
- Wohnort varchar(30)
- 🔑 BestellID integer
- KundeID integer → kunde.KundeID
- Datum date
- 🔑 BestellID integer → bestellung.BestellID
- 🔑 ISBN varchar(17) → buch.ISBN
- Menge integer
🔑 Primärschlüssel · → Fremdschlüssel (verweist auf Tabelle.Attribut)
Ohne Anmeldung wird deine Abfrage nicht gespeichert.