Oracle SQL Tutorium - Wiederholung DB I - (Version 2.6 vom 24.2.2015) Einleitung Im Folgenden sind zur Wiederholung eine Reihe von SQL-Übungsaufgaben zu lösen. Grundlage für die Aufgaben ist die Mondial Datenbank, auf deren Tabellen ihr Zugriff habt. Vorbereitende Arbeiten Öffne SQLPLUS und melde dich mit deinem Benutzeraccount (analog Account Rechenzentrum) und Passwort 1 am Oracle Server mit der SID oracledbwi an: sqlplus <dein rechenzentrums account>/<passwort>@oracledbwi bzw. sqlplus <dein rechenzentrums account>@oracledbwi 2 Du kannst dein Passwort jederzeit mit dem folgenden Befehl ändern: alter user <dein account> identified by <neues passwort>; Als Frontend kannst du entweder SQLPLUS (Windows Applikation), SQLPLUS Kommandozeilen Applikation) oder den SQL-Developer 3 benutzen. Für die folgenden vorbereitenden Schritte ist aber SQLPLUS am geeignetsten. Gib das folgende Kommando ein: select * from mondial.city where name like 'Pa%'; Der Zugriff auf Tabellen in einem anderen Schema erfolgt durch voranstellen des Schemanames 1. Falls du dich bisher noch nicht (auch nicht letztes Semester) am neuen Server mit der SID oracledbwi abgemeldet hast, so lautet dein initiales Passwort kein - dies muss bei der ersten Anmeldung (mit SQLPLUS) geändert werden.. 2. SQLPlus frägt euch dann nach eurem Passwort, das verdeckt einegeben wird 3. Start >> Alle Programme >> Entwicklung >> Datenbanken >> Oracle... >> Anwendungsentwicklung Andreas Schmidt Oracle SQL-Fingerübungen 1/5
vor den Tabellennamen (hier also mondial). Wenn einem das auf Dauer zu schreibintensiv ist, kann man sich ein Synonym einrichten, etwa so: create synonym city for mondial.city; In Zukunft kann man nun mittels des Synonyms city auf die Tabelle city im Schema mondial zugreifen: select * from city where name like 'Pa%'; Verschaff dir als nächstes einen Überblick, welche Tabellen es in der Mondial Datenbank gibt. Dies geschieht durch Zugriff auf das Metaschema der Oracle-Datenbank (Hinweis: Der Schemaname muss groß geschrieben werden). select table_name from all_tables where owner='mondial'; Ok, 28 Tabellen, ganz schön viel Arbeit, wenn wir für jede ein Synonym einrichten wollen, aber es geht auch einfacher: Wir basteln uns die notwendigen Statements mittels SQL einfach selbst 1. Ausgangspunkt ist das obige Statement, das nun um konstante Ausdrücke erweitert wird: select 'create synonym ' table_name ' for mondial.' table_name ';' from all_tables 1. Das nennt man SQL to generate SQL. Andreas Schmidt Oracle SQL-Fingerübungen 2/5
where owner='mondial'; Aha, ganz schön praktisch, jetzt nur noch mit dem Befehl set pagesize 0 die störenden Überschriften weg und dann einfach mittels einmal Copy&Paste die Synonyme anlegen. Nochmal zurück zum Metaschema in dem alle Informationen über Benutzer, Tabellen, Spalten, Schlüssel, Fremdschlüssel, Constraints, Zugriffrechten, und und und... der relationalen Datenbank abgelegt sind. Einen guten Einstiegspunkt für die Metainformationen bietet der View dictionary, der alle Tabellen und Views mit Metainformastionen auflistet und weiterhin für jeden Datensatz noch eine kurze Beschreibung bereithält, für was die Tabelle/der View gut ist. Nutze diesen Einstiegspunkt und suche mittels eines SQL-Statements nach einer Tabelle in der Informationen über die Attribute und deren Typen der einzelnen Tabellen zu finden sind. Erstelle ein SQL-Statement das alle Attribute mit Datentypen für die Tabelle city im Schema mondial ausgibt. Auf der Homepage findest du Informationen über das Mondial Schema. Besorge dir diese Informationen und bearbeite mit deren Hilfe die untenstehende Aufgaben mit dem Frontend deiner Wahl. Hinweise: - Die ersten 10 Fragen solltest du auf alle Fälle schaffen, danach kommt die Kür ;-) Die korrekten Ausgabedatensätze auf die Fragen findest du auf der Homepage, bzw. direkt hier: http://www.smiffy.de/db-is-ii/beispielcode/tutorium0-sql-results.html Übungsaufgaben 1. Welche Städte liegen auf dem Äquator? 2. Welche Organisationen haben ihren Sitz in Wien? 3. Welche Hauptstädte sind zugleich Sitz von Organisationen? 4. Welche Organisationen haben ihren Sitz in Asien (Ausgabe nach Name sor- Andreas Schmidt Oracle SQL-Fingerübungen 3/5
tiert)? 5. Wie heißt die größte Insel? 6. Gib alle Länder ohne Berge aus. 7. Gib die Namen aller Hauptstädte, sortiert nach Name aus. 8. Gib die Namen und Einwohnerzahl aller Hauptstäde, absteigend sortiert nach Einwohnerzahl aus. 9. Gib die Stadt mit den meisten Einwohnern aus. 10. Welcher Fluss fließt durch die meisten Länder? 11. Wie lang ist die Außengrenze von Deutschland? 12. Wieviele Inseln gehören zu den kleinen Antillen? 13. Welche Inselgruppen bestehen aus sechs Inseln? 14. Welches ist die Inselgruppe mit den meisten Inseln? 15. Wieviele Protestanten gibt es auf der Welt? 16. In welchem Land werden die meisten Sprachen gesprochen? 17. Gib die Religionen zusammen mit ihren Anhängern, absteigend sortiert nach Anzahl Anhänger aus 18. Welche Religion hat die geringste Anzahl Anhänger? 19. Wie heißt der höchste Berg Amerikas? 20. Ordne jedem See die am ehesten von der Größe her passende Insel zu und gib die Paare aus. 21. Wie heisst der Hausberg von Tokyo 1? 22. Gib alle Binnenländer (d.h. Länder ohne direkten Zugang zum Meer) aus (sortiert nach dem Namen der Länder). Anhang: Wenn du die Aufgaben auf deinem Rechner durchführen willst, kannst du dir dafür die Daten der Mondial-Datenbank auf deinen Rechner laden. Die Daten stehen im Oracle und im MySQL-Format auf der Homepage zur Verfügung, eine Portierung auf andere relationale Datenbanken ist aber auch recht einfach, es müssen zumeist nur die Tabellendefinitionen angepasst werden. Eine ca. 40 seitige Einführung zu SQL anhand der Mondial Datenbank findest du ebenfalls auf der Kurshomepage. Quellen: 1. Im Schema Mondial gibt es eine Funktion abstand, die den Abstand zwischen zwei Koordinaten errechnet. Andreas Schmidt Oracle SQL-Fingerübungen 4/5
Kurshompage: http://www.smiffy.de/db-is-ii Hinweis: Der Oracle Server befindet sich auf dem Rechner mit dem Namen iwi-w-vm-dbo.hs-karlsruhe.de, Port 1521. Die Datenbankinstanz ist oracledbwi.hs-karlsruhe.de Wenn du die Aufgaben zuhause und ohne Verbindung zur Oracle Datenbank an der Hochschule machen willst, findest du auf der Kurshomepage die DDL und DML-Statements für Oracle und MySQL. Weiterhin findest du dort Anleitungen wie du dich von Zuhause aus mit der Oracle-Datenbank an der Hochschule verbinden kannst. Andreas Schmidt Oracle SQL-Fingerübungen 5/5