SQL-Aufgaben Für die SQL-Aufgaben steht Ihnen die Buchversand-Datenbank zur Verfügung. Zugriff erfolgt über: http://wwwccb.fh-bochum.de/phpmyadmin User/Password haben Sie in der Vorlesung/Übung erhalten. Nach dem Anmelden wählen Sie bitte die Datenbank „Buchversand“ aus: Danach klicken Sie auf „SQL“: Es wird ein weiteres Fenster geöffnet, in dem Sie die SQL-Befehle eingeben können. Die Befehle werden ausgeführt, wenn Sie auf OK drücken. Die Ergebnisse werden im normalen Fenster angezeigt. Einfache Aufgaben: 1. Welche Interpreten sind in der Datenbank gespeichert? 2. Welche Autoren haben den Vorname „Klaus“? 3. Welche Artikel haben eine Bezeichnung, die mit „BWL“ beginnt? 4. Welche Artikel haben eine Bezeichnung, die „BWL“ irgendwo enthält? 5. An welchen Tagen (Bestelldatum) hat der Kunde mit der Nr. 58 Bestellungen aufgegeben? 6. Welche Bewertungen hat der Artikel mit der Nr. 27? 7. Welche Artikel (Artikelnnummern) wurden mit höchstens „2“ bewertet? 8. Welche Artikel kosten zwischen 20€ und 25€? Aufgaben mit Aggregatfunktionen: 1. Wie viele Artikel gibt es insgesamt? 2. Wie viele Artikel enthalten „BWL“ in der Bezeichnung? 3. Wie viele Artikel haben einen Preis? (d.h., Sie zählen Artikel mit einem Preis, der nicht NULL ist) 4. Wie viele unterschiedliche Preise gibt es? (d.h., Sie zählen die unterschiedlichen Preise der Artikel) 5. Wie groß ist die maximale und durchschnittliche Anzahl von bestellten Artikeln (Tabelle BestellungArtikel)? 6. Wie ist die durchschnittliche Bewertung des Artikels mit der Nr 27? 7. Welches ist die niedrigste Bewertung, die „S. Ruetz“ erstellt hat? Aufgaben mit Gruppierung: 1. Listen Sie die durchschnittliche Bewertung zu allen Artikelnummern auf (gruppieren Sie in der Tabelle Bewertung über die Artikelnummern, und bilden Sie den Durchschnitt)? 2. Ergänzen Sie die vorherige Aufgabe, indem Sie nur Artikel ausgeben, deren durchschnittliche Bewertung besser als 4.5 ist. 3. Zählen Sie die Anzahl der Kunden, die es zu den verschiedenen Postleitzahlen jeweils gibt. 4. Zählen Sie, wie viele Artikel es für die verschiedenen Preise jeweils gibt. Aufgaben über zwei Tabellen: 1. Wie ist die Artikelbezeichnung des Buches mit der ISBN 3486586130? 2. Welche Artikelbezeichnungen gibt es zu Büchern des Verlags Pearson Studium? 3. Welche Artikel (Artikelbezeichnung) wurden mit 5 Punkten bewertet? Zeigen Sie die Titel nicht doppelt an. 4. Welche Lieferdaten gehören zu welchen Bestellungsdaten? (Daten im Sinne von Datumswerten) 5. Wie lang ist die Lieferzeit (also die Differenz zwischen Lieferdatum und Bestelldatum) aller Lieferungen? 6. Wie lang sind die durchschnittliche und die maximale Lieferzeit? 7. Wie viele Lieferungen wurden in ein oder zwei Tagen geliefert? Aufgaben über drei Tabellen: 1. Welche Bücher (ISBN reicht) hat der Autor Jonathan Hamilton geschrieben? 2. Welche Bücher (Bezeichnung des Buchs aus dem Artikel) hat der Autor Jonathan Hamilton geschrieben? 3. Wie viele Bücher hat der Autor Jonathan Hamilton geschrieben? 4. Welche Artikel hat die Kundin Hanna Lang bestellt? 5. Wie hoch ist der gesamte Umsatz der Kundin Hanna Lang (Summe von Preis * Anzahl)? 6. Wie hoch ist der Umsatz der jeweiligen Kunden? (Gruppierung) Lösungen: Einfache Aufgaben: 1. Select * From Interpret 2. Select * From Autor where Vorname="Klaus" 3. Select * From Artikel where Bezeichnung Like "BWL%" 4. Select * From Artikel where Bezeichnung Like "%BWL%" 5. Select Bestelldatum From Bestellung where KundeNr = 58 6. Select Wert From Bewertung Where ArtikelNr = 27 7. Select ArtikelNr From Bewertung Where Wert <= 2? 8. Select * From Artikel Where Preis >=20 and Preis <= 25 Aufgaben mit Aggregatfunktionen: 1. Select count(*) From Artikel? 2. Select count(*) from Artikel where Bezeichnung Like "%BWL%" 3. Select count(Preis) From Artikel 4. Select count(distinct Preis) From Artikel 5. Select avg (Anzahl) as Durchschnitt, max(Anzahl) as Maximum From BestellungArtikel 6. Select avg(Wert) from Bewertung where ArtikelNr=27 7. Select min(Wert) from Bewertung where Name ="S. Ruetz" Aufgaben mit Gruppierung: 1. Select ArtikelNr, avg(Wert) from Bewertung group by ArtikelNr 2. Select ArtikelNr, avg(Wert) from Bewertung group by ArtikelNr having avg(Wert) > 4.5 3. Select PLZ, count(*) from Kunde group by PLZ 4. Select Preis, count(*) from Artikel group by Preis Aufgaben über zwei Tabellen: 1. SELECT Artikel.Bezeichnung FROM Artikel, Buch where Buch.ISBN10 = '3486586130' and Artikel.ArtikelNr = Buch.ArtikelNr 2. SELECT Artikel.Bezeichnung FROM Artikel, Buch where Buch.Verlag = 'Pearson Studium' and Artikel.ArtikelNr = Buch.ArtikelNr 3. SELECT distinct Artikel.Bezeichnung FROM Artikel, Bewertung where Artikel.ArtikelNr = Bewertung.ArtikelNr and Bewertung.Wert = 5 4. SELECT Lieferung.Lieferdatum, Bestellung.Bestelldatum from Lieferung, Bestellung where Lieferung.BestellungNr = Bestellung.BestellungNr 5. SELECT Lieferung.Lieferdatum-Bestellung.Bestelldatum from Lieferung, Bestellung where Lieferung.BestellungNr = Bestellung.BestellungNr 6. SELECT avg(Lieferung.Lieferdatum-Bestellung.Bestelldatum), max(Lieferung.LieferdatumBestellung.Bestelldatum)from Lieferung, Bestellung where Lieferung.BestellungNr = Bestellung.BestellungNr 7. SELECT count(*) from Lieferung, Bestellung where Lieferung.BestellungNr = Bestellung.BestellungNr and Lieferung.Lieferdatum-Bestellung.Bestelldatum <= 2 Aufgaben über drei und mehr Tabellen: 1. SELECT isbn10 from Autor, Buch, BuchAutor where Autor.Vorname = "Jonathan" and Autor.Nachname = "Hamilton" and Autor.AutorNr = BuchAutor.AutorNr and BuchAutor.ArtikelNr = Buch.ArtikelNr 2. SELECT Bezeichnung from Autor, Artikel, BuchAutor where Autor.Vorname = "Jonathan" and Autor.Nachname = "Hamilton" and Autor.AutorNr = BuchAutor.AutorNr and BuchAutor.ArtikelNr = Artikel.ArtikelNr 3. SELECT count(*) from Autor, Buch, BuchAutor where Autor.Vorname = "Jonathan" and Autor.Nachname = "Hamilton" and Autor.AutorNr = BuchAutor.AutorNr and BuchAutor.ArtikelNr = Buch.ArtikelNr 4. SELECT * from Artikel, BestellungArtikel, Bestellung, Kunde where Kunde.Nachname = "Lang" and Kunde.Vorname="Hanna" and Kunde.KundeNr = Bestellung.KundeNr and BestellungArtikel.BestellungNr = Bestellung.BestellungNr and BestellungArtikel.ArtikelNr = Artikel.ArtikelNr 5. SELECT sum(Artikel.Preis * BestellungArtikel.Anzahl) from Artikel, BestellungArtikel, Bestellung, Kunde where Kunde.Nachname = "Lang" and Kunde.Vorname="Hanna" and Kunde.KundeNr = Bestellung.KundeNr and BestellungArtikel.BestellungNr = Bestellung.BestellungNr and BestellungArtikel.ArtikelNr = Artikel.ArtikelNr 6. SELECT Kunde.Nachname,Kunde.Vorname,sum(Artikel.Preis * BestellungArtikel.Anzahl) from Artikel, BestellungArtikel, Bestellung, Kunde where Kunde.KundeNr = Bestellung.KundeNr and BestellungArtikel.BestellungNr = Bestellung.BestellungNr and BestellungArtikel.ArtikelNr = Artikel.ArtikelNr group by Kunde.Nachname,Kunde.Vorname