Modul 105 Datenbanken mit SQL bearbeiten Aufgaben Datenmanipulation Muster-Lösungen Datenmanipulation 1. Wieviele Kunden sind bereits in der Datenbank enthalten? Select * from Kunde; oder noch besser: Select count(*) from Kunde; 2. Es wird von jedem Medium nun ein Exemplar angeschafft. Tragen Sie mittels einem Statement alle Exemplare ein. Insert into Exemplar (idMedium) select id from Medium; 3. Gerda lieh sich heute vor zwei Monaten das Exemplar von „Ius Humanitatis“ aus. Tragen Sie diese Ausleihe ein. Sie darf das Buch ausnahmsweise ein paar Tage länger behalten. Verwenden Sie mehrere Statements… Insert values insert set into Ausleihe (idExemplar, idKunde, von, bis) (4,1,‘2012-12-20‘, NULL); into Notiz bemerkung=‘Darf das Buch etwas länger behalten‘, idAusleihe = last_insert_id(); 4. Ein zweites Exemplar von Harry Potter wird angeschafft. Insert into Exemplar (idMedium) select id from Medium where Titel = '…'; 5. Reto Schärrer aus 8400 Winterthur (Tel 052 222 1535, 15.8.1976) ist neuer Kunde. Insert into Kunde (name, vorname, strasse, plz, ort, geburtsdatum, telefon) values ('Schärrer', 'Reto', null, 8400, 'Winterthur', '1976-08-15', '0522221535'); 6. Reto Schärrer gibt seine Strasse bekannt: Paul-Scherrer-Strasse 354. Update Kunde set strasse = 'Paul-Scherrer-Strasse 354' where id = last_insert_id() 7. Gerda ist gestern umgezogen nach Berninastrasse 53, 8310 Zürich. Insert into Kunde (name, vorname, strasse, plz, ort, geburtsdatum, telefon, idVorgaenger) select name, vorname, 'Berninastrasse 53',8310,'Zürich', geburtsdatum, telefon, id from Kunde where id = 1; 8. Reto Schärrer leiht das Exemplar von Schuhlöffel aus. Insert into Ausleihe (idExemplar,idKunde, von, bis) values (2, 3, now(), null); 9. Gerda hat trotz längerer Frist das Buch Ius Humanitatis nicht zurück gebracht. Es wird ihr eine Rechnung gestellt (an welche Adresse?). insert into Rechnung (idAusleihe, betrag, vom, zahlbarBis, bezahltAm) 10_datenmanipulation.docx - 1/2 - J. Vogel, 30.05.2013 Modul 105 Datenbanken mit SQL bearbeiten Aufgaben Datenmanipulation values (1, datediff(now(),von)*2.5, now(), date_add(now(),interval 10 day), null); 10.Peter möchte den Schuhlöffel ebenfalls hören. Er reserviert sich das Werk. insert into Reservation (idKunde, idExemplar, idMedium) values (2, NULL, 2); 11.Die maximale Ausleihfrist von Ius Humanitatis wird verdoppelt. update Medium set maxAusleihfrist = 2 * maxAusleihfrist where id = 4; 12.Gerda’s Hund hat das Buch zerfetzt. Das Buch wird mangels Nachfrage nicht ersetzt. Stattdessen bietet Gerda an, drei neue CDs zu kaufen: Pinocchio, Aladin und die Wunderlampe und Fridolin. Alle drei erhalten die gleichen Werte wie Harry Potter. nicht löschen! Sonst ist die DB inkonsistent. Besser: Attribut 'Aussortiert' bei Exemplar hinzufügen. (Rest ist trivial!) 13.Reto Schärrer gibt die geliehene MC zurück und holt nun Fridolin. update Ausleihe set bis = now() where idKunde=3 and idExemplar=...; insert into Ausleihe (idKunde,idExemplar,von) values (3,5,now()); 14.Am nächsten Tag holt sich Peter die reservierte MC. update Reservation set idExemplar=... where id = ...; insert into Ausleihe (...) values ...; 15.Wieviele Exemplare sind zur Zeit verliehen? select count(*) from Ausleihe where bis IS NULL; 16.Welche Exemplare wurden noch nie verliehen? ***! select from left where * Exemplare join Ausleihe on Exemplare.id=Ausleihe.idExemplare Ausleihe.id is NULL; 17.Wie lange wurde Ius Humanitatis verliehen? select sum(datediff(bis,von)) from Ausleihe where idExemplare = ...; 18.Wie viele Tage ist Gerda alt? select datediff(now(),geburtstag) from Kunde where id=1; 19.Wie alt ist unsere Kundschaft im Durchschnitt? select avg(datediff(now(),geburtstag)) from Kunde; 20.Wie hoch ist die Totalsumme von gestellten Rechnungen (aktuelle Debitoren)? select sum(betrag) from Rechnung; Ohne Gewähr auf Korrektheit! 10_datenmanipulation.docx - 2/2 - J. Vogel, 30.05.2013