Ü14.1 MySQL CREATE VIEW Geburtstagsliste AS SELECT Familienname, Vorname, Geburtsdatum FROM tbPerson ORDER BY MONTH(Geburtsdatum) ASC, DAY(Geburtsdatum) ASC; oder CREATE VIEW Geburtstagsliste AS SELECT Familienname, Vorname, Geburtsdatum FROM tbPerson ORDER BY EXTRACT(MONTH FROM Geburtsdatum) ASC, EXTRACT(DAY FROM Geburtsdatum) ASC; SELECT * FROM Geburtstagsliste; PostgreSQL CREATE VIEW Geburtstagsliste AS SELECT Familienname, Vorname, Geburtsdatum FROM tbPerson ORDER BY EXTRACT(MONTH from Geburtsdatum) ASC, EXTRACT(DAY FROM Geburtsdatum) ASC; SELECT * FROM Geburtstagsliste; SQL Server CREATE VIEW Geburtstagsliste AS SELECT TOP(100) Familienname, Vorname, Geburtsdatum FROM tbPerson ORDER BY MONTH(Geburtsdatum) ASC, DAY(Geburtsdatum) ASC; Es ist ein TOP(100) mit der 100 beispielhaft eingefügt. Der SQL Server benötigt hier eine Angabe, wenn es eine ORDER BY-Klausel gibt. MS Access über die grafische Oberfläche Oracle, Firebird CREATE VIEW Geburtstagsliste AS SELECT Familienname, Vorname, Geburtsdatum FROM tbPerson ORDER BY EXTRACT(MONTH FROM Geburtsdatum) ASC, EXTRACT(DAY FROM Geburtsdatum) ASC; SELECT * FROM Geburtstagsliste; OpenOffice.org Base CREATE VIEW Geburtstagsliste AS SELECT "Familienname", "Vorname", "Geburtsdatum" FROM "tbPerson" ORDER BY EXTRACT(MONTH FROM "Geburtsdatum") ASC, EXTRACT(DAY FROM "Geburtsdatum") ASC; SELECT * FROM GEBURTSTAGSLISTE; Hinweis zu openBase: Wenn der Viewname in Anführungsstriche gesetzt wird, wird die Originalschreibweise übernommen, wenn nicht, wird der Name in Großbuchstaben umgesetzt. Daher die Großbuchstaben in der SELECT-Abfrage, die im Übrigen im Abfragefenster, nicht im SQL-Fenster eingegeben werden muss. Hinweis: Mit Qualifizierung wäre das besser gewesen, aber zum Start ist das in Ordnung. Ab der nächsten Aufgabe mit Qualifizierung. Ü14.2 MySQL, PostgreSQL, SQL Server, Oracle, Firebird CREATE VIEW CellerKurse AS SELECT KID, Kurskennung, Kursbeginn, Kursende FROM tbKurs WHERE Kurskennung LIKE 'Celle%'; SELECT * FROM CellerKurse; MS Access über die grafische Oberfläche OpenOffice.org Base CREATE VIEW "CellerKurse" AS SELECT k."KID", k."Kurskennung", k."Kursbeginn", k."Kursende" FROM "tbkurs" k WHERE k."Kurskennung" LIKE 'Celle%'; SELECT * FROM "CellerKurse"; Ü14.3 MySQL, PostgreSQL, Oracle, Firebird CREATE VIEW AccessKurse (Thema, Beschreibung, Kennung, Beginn, Ende, Kursleiter) AS SELECT kt.Kursthema, kt.Kursbeschreibung, k.Kurskennung, k.Kursbeginn, k.Kursende, k.DID FROM tbKursthema kt INNER JOIN tbkurs k ON (kt.KTHID = k.KTHID) WHERE kt.Kursthema LIKE 'Access%' ORDER BY k.Kursbeginn ASC; SELECT * FROM AccessKurse; SQL Server CREATE VIEW AccessKurse (Thema, Beschreibung, Kennung, Beginn, Ende, Kursleiter) AS SELECT TOP(100) kt.Kursthema, kt.Kursbeschreibung, k.Kurskennung, k.Kursbeginn, k.Kursende, k.DID FROM tbKursthema kt INNER JOIN tbkurs k ON (kt.KTHID = k.KTHID) WHERE kt.Kursthema LIKE 'Access%' ORDER BY k.Kursbeginn ASC; SELECT * FROM AccessKurse; OpenOffice.org Base CREATE VIEW "AccessKurse" ("Thema", "Beschreibung", "Kennung", "Beginn", "Ende", "Kursleiter") AS SELECT kt."Kursthema", kt."Kursbeschreibung", k."Kurskennung", k."Kursbeginn", k."Kursende", k."DID" FROM "tbKursthema" kt INNER JOIN "tbkurs" k ON (kt."KTHID" = k."KTHID") WHERE kt."Kursthema" LIKE 'Access%' ORDER BY k."Kursbeginn" ASC; SELECT * FROM "AccessKurse"; Ü14.4 MySQL ALTER VIEW AccessKurse (Thema, Beschreibung, Kennung, Beginn, Ende, Kursleiter) AS SELECT kt.Kursthema, kt.Kursbeschreibung, k.Kurskennung, k.Kursbeginn, k.Kursende, p.Familienname FROM tbKursthema kt INNER JOIN tbkurs k ON (kt.KTHID = k.KTHID) INNER JOIN tbDozent d ON (k.DID = d.DID) INNER JOIN tbPerson p ON (d.PID = p.PID) WHERE kt.Kursthema LIKE 'Access%' ORDER BY k.Kursbeginn ASC; SELECT * FROM AccessKurse; SQL Server ALTER VIEW AccessKurse (Thema, Beschreibung, Kennung, Beginn, Ende, Kursleiter) AS SELECT TOP(100) kt.Kursthema, kt.Kursbeschreibung, k.Kurskennung, k.Kursbeginn, k.Kursende, p.Familienname FROM tbKursthema kt INNER JOIN tbkurs k ON (kt.KTHID = k.KTHID) INNER JOIN tbDozent d ON (k.DID = d.DID) INNER JOIN tbPerson p ON (d.PID = p.PID) WHERE kt.Kursthema LIKE 'Access%' ORDER BY k.Kursbeginn ASC; SELECT * FROM AccessKurse; MS Access über die grafische Oberfläche PostgreSQL, Oracle, Firebird Der VIEW muss neu angelegt werden. DROP VIEW AccessKurse; CREATE VIEW AccessKurse (Thema, Beschreibung, Kennung, Beginn, Ende, Kursleiter) AS SELECT kt.Kursthema, kt.Kursbeschreibung, k.Kurskennung, k.Kursbeginn, k.Kursende, p.Familienname FROM tbKursthema kt INNER JOIN tbkurs k ON (kt.KTHID = k.KTHID) INNER JOIN tbDozent d ON (k.DID = d.DID) INNER JOIN tbPerson p ON (d.PID = p.PID) WHERE kt.Kursthema LIKE 'Access%' ORDER BY k.Kursbeginn ASC; SELECT * FROM AccessKurse; OpenOffice.org Base Der VIEW muss neu angelegt werden. DROP VIEW "AccessKurse"; CREATE VIEW "AccessKurse" ("Thema", "Beschreibung", "Kennung", "Beginn", "Ende", "Kursleiter") AS SELECT kt."Kursthema", kt."Kursbeschreibung", k."Kurskennung", k."Kursbeginn", k."Kursende", p."Familienname" FROM "tbKursthema" kt INNER JOIN "tbkurs" k ON (kt."KTHID" = k."KTHID") INNER JOIN "tbDozent" d ON (k."DID" = d."DID") INNER JOIN "tbPerson" p ON (d."PID" = p."PID") WHERE kt."Kursthema" LIKE 'Access%' ORDER BY k."Kursbeginn" ASC; SELECT * FROM "AccessKurse"; Ü14.5 MySQL, PostgreSQL, SQL Server, Oracle, Firebird, OpenOffice.org Base DROP VIEW CellerKurse; DROP VIEW AccessKurse; DROP VIEW Geburtstagsliste; DROP VIEW KursCE23; Hinweis: Beachten Sie bei OpenOffice.org Base, dass Sie je nach Erzeugungsart Anführungsstriche setzen müssen. MS Access über die grafische Oberfläche Ü14.6 Weil in einem VIEW keine Daten gespeichert werden, werden diese auch beim Löschen des VIEW nicht gelöscht. Es wird lediglich ein zusätzlicher Zugriffsweg auf die Daten gelöscht.