Übungen zu Abfragen einer Datenbank mit OpenOffice
QBE (QBE Query by Example)
SQL (Structured Query Language)

Datenbank laden (Zunächst hier bibliothek.odb holen und speichern.)



Aufgaben:
Stelle fest, was die Abfrage bewirkt bzw. erstelle eine Anfrage in QBE oder SQL.
Schalte von QBE nach SQL um (oder umgekehrt) und präge dir die Schreibweise ein.

  1. SELECT LeserName, LeserAlter, LeserGeschlecht FROM leser

  2. Alle Leser, die jünger als 18 sind

  3. SELECT * FROM leser WHERE LeserAlter BETWEEN 14 and 18

  4. SELECT * FROM leser WHERE LeserAlter NOT IN (14,15) AND (LeserGeschlecht='m') OR (LeserName='Erna')
    Die Darstellung in QBE ist recht umständlich und zeigt einen Vorteil von SQL.

  5. Ergänzung zum vorangehenden Beispiel: Filter einstellen und Anfrage noch einmal starten. Filter wieder abstellen.

  6. SELECT * FROM leiht WHERE LeserNr = '45'
    Beachte, dass unter QBE jetzt die Tabelle 'leiht' angezeigt wird.

  7. SELECT * FROM leser WHERE EXISTS
    (SELECT * FROM leiht WHERE leiht.LeserNr=leser.LeserNr)

  8. Drücke auf und bringe die Tabellen 'leser' und 'leiht' auf die Arbeitsfläche.
    Stelle die Verknüpfung zwischen den zugehörigen Feldern her.

    Starte die folgenden Anfrage.

  9. SELECT LeserName, BuchNr
    FROM leser INNER JOIN leiht on leser.LeserNr=leiht.LeserNr


    Den Dezimalpunkt bei 1.07 beachten!

  10. SELECT LeserNr, count(*) AS ausgeliehen
    FROM leiht
    GROUP BY LeserNr

  11. SELECT LeserNr, count(distinct BuchNr) AS ausgeliehen
    FROM leiht
    GROUP BY LeserNr

  12. SELECT LeserNr, count(distinct BuchNr) AS ausgeliehen
    FROM leiht
    GROUP BY LeserNr
    HAVING min(Datum)<'2002-04-05'
    Das Format für das Datum beachten!

  13. SELECT LeserNr, count(distinct BuchNr) AS ausgeliehen
    FROM leiht
    WHERE Datum)>='2002-04-05'
    GROUP BY LeserNr

  14. SELECT *
    FROM leser
    ORDER BY LeserAlter DESC, LeserName

  15. Drücke auf und bringe die Tabellen 'leser' und 'leiht' auf die Arbeitsfläche.
    Stelle die Verknüpfung zwischen den zugehörigen Feldern her.

    Starte die folgenden Anfrage.

  16. SELECT leser.LeserName, buch.BuchAutor
    FROM leiht, leser, buch
    WHERE ( leiht.LeserNr = leser.LeserNr AND leiht.BuchNr = buch.BuchNr )
    AND ( ( buch.BuchAutor IN ( 'Goethe', 'Schiller' ) ) )