Aufgaben zu SQL-Abfragen
Mit diesen Übungsaufgaben lernst du das Abfragen und Auswerten von Daten mithilfe von SQL.
- 1
Dies ist das Klassendiagramm einer Datenbank, die erfassen soll, wer welche FIlme geschaut hat und besitzt.
Du möchtest jetzt aus dieser Datenbank verschiedene Daten abfragen.
Überlege dir, welche Fragen du stellen könntest und versuche dabei zu identifizieren, was die Anfragen gemeinsam haben.
Beginne mit "Zeige mir...".
- 2
Abfragen ohne Bedingung
Oben siehst du einen Teil einer fertigen Filmdatenbank, die sich auf den Film und seine Mitwirkenden konzentriert. Gib zu folgenden Anfragen ein passendes SQL-Statement an
Gib alle Datensätze in der Relation FILM aus
Gib den Namen aller Personen in FILMPERSON aus
Finde für jeden Filmtitel heraus, wie viele Oscarnominierungen und -gewinne er hat
Welche Abfrage liefert als Ergebnis jeden Filmtitel genau einmal?
- 3
Abfragen in einer Relation mit Bedingungen
Oben siehst du einen Teil einer fertigen Filmdatenbank, die sich auf den Film und seine Mitwirkenden konzentriert. Gib zu folgenden Anfragen ein passendes SQL-Statement an
Gib den Namen aller Personen aus, die mindestens einen Oscar gewonnen haben.
Gib den Titel und die Länge aller Filme an, die länger als 80 aber kürzer als 120 Minuten sind.
Gib die IDs aller Filme aus, die das Genre "Komödie", "Science Fiction" oder "Action" habe. Filtere doppelte IDs heraus, falls ein Film mehr als eines der Genres hat.
Finde die Titel aller Filme, die zwischen 2010 und 2020 herausgekommen sind (Das Datum hat die Form 'yyyy-mm-dd').
Gebe alle Namen von Personen aus, die nicht "Stan Lee" heißen. Filtere eventuelle doppelte Namen heraus.
Gib alle Filmtitel an, die zwar für einen Oscar nominiert waren, aber keinen bekommen haben.
Gib die Namen aller Filmpersonen an, die genau eine Oscarnominierung mehr haben als Oscarauszeichnungen, aber dabei auch mindestens zweimal nominiert waren.
- 4
Formuliere eine Abfrage, die aus der vorliegenden Tabelle NUTZER alle Daten der Nutzer herausliest, die mehr als 2000 Stunden gestreamt haben.
- 5
Du hast folgende Tabellen zur Verwaltung der Datenbank eines Streaminganbieters:
Du möchtest nun durch eine SQL-Anfrage den Namen und das Preismodell aller Nutzer, die mehr als 2000 Nutzungsstunden haben und findest online, dass dazu im FROM-Statement der SQL-Abfrage mehrere Tabellen angegeben werden können und man mit TABELLENNAME.Attributname auf das jeweilige Attribut einer Tabelle zugreifen kann.
Deine Abfrage lautet
SELECT NUTZER.UserID, ZAHLUNGSDATEN.KundenID, ZAHLUNGSDATEN.Name, ZAHLUNGSDATEN.Preismodell FROM NUTZER, ZAHLUNGSDATEN WHERE NUTZER.Nutzungsstunden > 2000;
Du stutzt über das Ergebnis, statt 5 Zeilen hat deine Tabelle 45 Zeilen. Ein Ausschnitt sieht so aus:
Schau dir die Ausgangssituation und das Ergebnis an. Beschreibe anschließend in eigenen Worten: Was ist hier passiert?
- 6
Bestimme die Anzahl der Einträge in der Ergebnisrelation
T1: 3 Einträge
T2: 20 Einträge
T3: 12 Einträge
T4: 7 Einträge
SELECT * FROM T1, T2;
EinträgeSELECT * FROM T2, T4;
EinträgeSELECT * FROM T1,T2, T3, T4;
(Du kannst auch den Term eingeben, der das Ergebnis liefert)
EInträge
- 7
Mit der Abfrage
SELECT * FROM NUTZER, ZAHLUNGSDATEN;
erhältst du das zu umfangreiche kartesische Produkt, in dem jeder Eintrag aus NUTZER mit jedem Eintrag aus ZAHLUNGSDATEN kombiniert wird. Dabei möchtest du eigentlich nur die Einträge angezeigt haben, in denen der Fremdschlüssel ZAHLUNGSDATEN_KundenID in NUTZER mit dem Attributwert von KundenID ZAHLUNGSDATEN übereinstimmt:
(Ausschnitt aus der Ergebnistabelle)
Welche WHERE-Statements liefern dir nur die gelb markierten Datensätze mit den zusammenpassenden IDs?
- 8
Ein Streaminganbieter speichert Informationen über seine Nutzer in einer Datenbank.
Die Tabellen sehen beispielsweise so aus, wobei NUTZER.ZAHLUNGSDATEN_KundenID ein Fremdschlüssel zur Tabelle ZAHLUNGSDATEN ist:
In dieser Datenbank können bei Preismodellen wie "For-Two" oder "Family" mehrere Nutzer zu einem Kunden und seinen Zahlungsdaten gehören, weswegen zwischen den Tabellen NUTZER und ZAHLUNGSDATEN eine 1:n-Beziehung gilt.
Die Finanzabteilung möchte wissen, welche Preismodelle hinter den Kunden stecken, die mehr als 2000 Stunden gestreamt haben.
Formuliere eine SQL-Anfrage, die den zugehörigen Kundennamen und das Preismodell aller Nutzer heraussucht, die mehr als 2000 Stunden gestreamt haben.
- 9
Fußballhelden
Auf der Seite DBup2date der Universität Bayreuth ist eine Datenbank zur deutschen Bundesliga, mit der man Abfragen üben kann.
Öffne einen neuen Tab und gehe auf die Seite https://dbup2date.uni-bayreuth.de/bundesliga.html.
Oben auf der Seite siehst du ein Datenbankschema, indem Schlüssel unterstrichen und Fremdschlüssel überstrichen sind.
Darunter ist ein Editor, indem du entweder die SQL Abfrage schreiben kannst oder graphisch mit Bausteinen die SQL Abfragen zusammenbauen kannst.
Zum Warmwerden 1: Gib die Namen aller Vereine aus.
Suche den Namen und das Land der Spieler heraus, die zwischen 20 und 25 Spiele gespielt haben.
Verbinde die Informationen, die es in der Tabelle Spieler gibt mit den Informationen der zugehörigen Vereine und gib alles aus.
Gib den Namen und die Trikotnummer aller Spieler aus, die beim FC Bayern München spielen
Gib Für alle Auswärtsspiele aller Vereine (Spiele als Gast) den Name des Vereins, die Tore der Heimmannschaft und die Tore der Gastmannschaft an, wenn die Gastmannschaft mindestens ein Tor mehr geschossen hat als die Heimmannschaft.
- 10
Gegeben ist folgendes Datenbankschema:
Gib eine SQL-Abfrage an, die zu jedem Eintrag in der Tabelle angeschaut die Informationen aus der Tabelle FILM verknüpft.
Gib eine SQL-Abfrage an, die zu jedem Eintrag in der Tabelle angeschaut die Informationen aus der Tabelle NUTZER verknüpft.
Abfragen können über beliebig viele Tabellen erfolgen. Kombiniere die Abfragen aus Teilaufgabe a) und b), um zu jedem Eintrag in der Tabelle angeschaut die zugehörigen Infos zu Nutzer und Film zu bekommen.
Entwickle die Anfrage aus Teilaufgabe c) so weiter, dass nur die Nutzungsstunden ausgegeben werden und auch nur dann, wenn die Person den Film "Captain America" geschaut hat.
Überlege dir mindestens drei Gründe, warum die Marketingabteilung nur die Nutzungsstunden haben möchte und nicht die anderen Informationen zu Nutzer oder Film.
- 11
natürliche Verbünde in m:n-Beziehungen
Gib eine SQL-Anfrage an, die die geforderten Informationen enthält
Gegeben ist folgendes Datenbankschema mit der Beziehungstabelle ist_belegt_mit:
Kombiniere die Tabellen, so dass für jeden Belag alle Pizzen angegeben sind, auf denen dieser zum Einsatz kommt. Gib auch die Einkaufs- und Verkaufspreise mit an!
Gib zu folgender Datenbankausprägung eine Abfrage an, die den Titel aller Filme ausgibt, in denen Joaquin Phoenix spielt.
Es gibt die Tabellen FILM, SCHAUSPIELER und spielt_in
Die Beziehungstabelle spielt ist die Brücke zwischen ONLINESPIEL und SPIELER.
Gib den Namen des Spiels und den Nutzernamen der Spieler aus, falls der Spieler jünger ist als die Altersfreigabe des Spiels.
- 12
Zootiere
Hier siehst du einen Ausschnitt aus den Klassen TIER(links) und TIERART(rechts) einer Zoo-Datenbank.
Was ist die TierNR beziehungsweise die TierartNR?
In welcher Beziehung stehen die Klassen TIER und TIERART zueinander und an was erkennt man das in der Taballe.
Starte eine SQL- Abfrage um alle männlichen Tiere zu finden.
Starte eine SQL- Abfrage um alle Tiere zu finden die noch keine Nachkommen haben.
Starte eine SQL- Abfrage um das Durchschnittsalter der Tiere zu berechnen
Starte eine SQL- Abfrage um alle Tiere zu finden die keine Säugetiere sind.
Starte eine SQL- Abfrage um das größte Tier zu finden.
Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0 → Was bedeutet das?