German English

DBS1 WS07/08 Blatt 5: SQL-Anfragen

Praktische SQL-Anfragen

  • Besprechungen ausgewählter Anfragen am 09.01.2008, 14.01.2008, 16.01.2008.
  • Beispiellösungen

Die nachfolgenden Anfragen basieren auf dem DB-Schema “Bibliothek” des SQL-Trainers in LOTS. Formulieren Sie die Anfragen in SQL und führen Sie diese im SQL-Trainer praktisch aus. Die Zahlen in Klammern geben – falls nicht anders angegeben – an, wieviele Tupel bei einer richtigen Anfrage zu erwarten sind.

SQL-Anfragen können Sie in LOTS unter dem Menüpunkt “SQL-Training” ausführen.

  1. Welche Bücher (Ausgabe von Titel und Alter = 2008 - jahr) sind nach 1997 eingegangen? Ordnen Sie die Titel nach dem Alter und bei gleichem Alter alphabetisch. Achtung: Der SQL-Trainer akzeptiert keine Anfragen, in denen die Zeichenkette ‘alter’ vorkommt.

  2. Welche Bücher der Datenbank sind im Springer-Verlag an den verschiedenen Verlagsorten seit 1990 erschienen. Ordnen Sie die Ergebnis nach dem Ort alphabetisch.

  3. Welche Autoren haben mindestens ein Buch zum Schlagwort ‘Datenbank’ verfasst?

  4. Geben Sie das älteste Buch / die ältesten Bücher (buchid, titel, jahr) der Datenbank aus. (d.h. die Bücher mit der kleinsten Jahreszahl als Erscheinungsjahr). Ihre Anfrage darf hierbei keine Annahme über das am weitesten zurückliegende Erscheinungsjahr machen, d.h. sie muss auch dann noch funktionieren, wenn ein noch älteres Buch aufgenommen wird.

  5. Welche Autoren haben den gleichen Nachnamen wie ein Verlag? (17)

  6. Welche Autoren (name, vornamen) waren bei in (ausschliesslich in) Berlin herausgegebenen Büchern als Herausgeber beteiligt? Verhindern Sie Doppelausgaben, und ordnen Sie die Ergebnismenge nach den Autornamen (name).

  7. Wieviel Prozent der Autoren sind mit unvollständigem (d.h. mit einem mit “.” abgekürzten) oder gar keinem (d.h. NULL-wertigen) Vornamen in der Datenbank gespeichert? Hinweis: Sie benötigen den datenbankspezifischen Befehl CAST(i AS DOUBLE PRECISION) um den Integerwert i nach DOUBLE zu konvertieren.

  8. Geben Sie für jeden Buchautor seine ID und seinen Namen sowie die Anzahl der von ihm verfassten Bücher aus. Ordnen Sie die Ergebnismenge absteigend nach der Anzahl der Bücher des Autors, bei gleicher Anzahl alphabetisch nach dem Namen.

  9. Welche Autoren (Name, Vorname), deren Name mit ‘Gold’ beginnt, waren nie als Herausgeber an Büchern beteiligt? Ordnen Sie die duplikatfreie Ergebnismenge nach dem Autornamen und -vornamen.

  10. Erstellen Sie eine kombinierte Liste (einspaltig) aller Vor- und Zunamen von Autoren. Die Liste soll alphabetisch sortiert sein. (5045/6396)

  11. Erstellen Sie eine Liste der Verlage - absteigend sortiert nach der Anzahl der im Verlag erschienen Bücher. (403; Springer(983), AW (544), PH (223), …)

  12. Wie heißen die Bücher mit den meisten Schlagworten?

  13. Welche Buecher haben im Schlagwort den String “Unix”? (4) Hinweis: Um Gross-/Kleinschreibung von UNIX/Unix/unix zu vernachlaessigen hilft die Funktion “lower(…)” bzw “upper(…)”.

  14. Schlagworte sind unterschiedlich lang. Wieviele Schlagworte gibt es mit der haeufigsten Schlagwortlaenge? (57, Laenge=15) Hinweis: Benutzen Sie die Funktion “char_length(…)”.

  15. Welche Verlage haben in allen Jahren von 1995 bis einschließlich 2001 wenigstens eines ihrer Bücher in die Datenbank eingebracht, vorausgesetzt, dass aus dem betreffenden Jahr überhaupt Bücher in der Datenbank sind?

  16. Erstellen Sie eine alphabetisch sortierte Liste aller Schlagworte und zählen Sie, wie oft jedes Schlagwort bei Büchern vergeben wurde, die im Springer-Verlag erschienen sind. Hinweis: Verwenden Sie dazu die OUTER-JOIN-Konstruktion.

  17. Von wievielen Autoren werden jeweils alle ihre Bücher für den Preis von 79,90 angeboten? Achtung: Es gibt Bücher in der Datenbank ohne Preisangabe (preis is NULL). (46/50) (Vergleichen Sie die Anzahl der Bücher insgesamt mit der Anzahl der Bücher a) ohne Preis, b) mit dem Preis 79.90, sowie c) ungleich dem Preis 79.90.)

  18. Welche Bücher haben einen Autor mit Rang=2, aber keinen mit Rang=1? (3 Bücher: 4901, 4902, 4904)

  19. Geben sie eine bzgl. des Nachnamens alphabetische Liste derjenigen Autoren aus, die jeweils mehr als 7 Bücher geschrieben haben und deren Bücher jeweils alle im selben Verlag erschienen sind. (5 Autoren: Date, … , Valentin)

  20. Listen Sie alphabetisch alle Titel derjenigen Bücher auf, für die es ein gleichnamiges Buch (gleicher Titel) gibt, was später zum gleichen Preis (ohne Beachtung der Währung) erschienen ist. (15: ATM-Netzwerke, …, Theoretische Informatik)

  21. Ermitteln Sie eine Liste, die für jeden Verlag das teuerste bzw. (bei gleichem Preis) die teuersten Bücher (ohne Beachtung der Währung) erstellt, d.h. finden Sie alle Bücher, deren Preis >= dem Preis aller Bücher des gleichen Verlags ist. Verwenden Sie hierbei das ALL-Prädikat. (197; u.a. Bertz mit zwei Büchern zu 48,00)

  22. Erstellen Sie eine Liste derjenigen Bücher (Buchtitel, Preis sowie Verlagsname), für die es mindesten ein weiteres Buch des gleichen Verlages gibt, das mindestens 10 mal so teuer ist (ohne Beachtung der Währung). Verwenden Sie hierbei das ANY-Prädikat. (50; u.a. 5 Bücher von AW mit Preis <=29,80 wg. teuerstem AW-Buch für 298,00)