Friedrich-Schiller-Universität Jena Fakultät für Mathematik und Informatik Institut für Informatik Lehrstuhl für Datenbanken und Informationssysteme Prof. Dr. Klaus Küspert Dipl.-Inf. Matthias Liebisch Informationen und Hinweise zum 6. Übungsblatt Datenbanken und Informationssysteme WS 2010/2011 Für die Lösung der Aufgaben in Übungsblatt 6 werden Ihnen spezielle Unix-Accounts zur Verfügung gestellt, die Ihnen Zugriff auf das am Lehrstuhl verwendete Datenbanksystem DB2 Universal Database gestatten. Bevor Sie mit der Arbeit beginnen, sollten Sie die folgenden Hinweise und Ge” brauchsanleitungen“ aufmerksam lesen und natürlich beachten. Wir gehen davon aus, dass Sie etwas Erfahrung im Umgang mit Unix-Systemen und den zugehörigen Hilfsprogrammen haben. 1 Unix-Account für die Übung • Leider können wir Ihnen aufgrund von Kapazitätsbeschränkungen für das Lösen der Aufgaben keine gesonderten Arbeitsplätze zur Verfügung stellen. Als zentraler Datenbankserver dient die iibm08 am DBIS-Lehrstuhl, auf den man sich per SSH (Secure Shell) vom lokalen Rechner wie folgt verbindet. Unter Windows muss dazu ein SSH-Client (z.B. PuTTY und WinSCP) installiert werden. > ssh [email protected] Ersetzen Sie die drei Fragezeichen bitte durch die Ihnen zugeordnete Nummer, das initiale Kennwort ist für alle db20ueb11: Login ueb070 ueb071 ueb072 ueb073 ueb074 ueb075 ueb076 ueb077 ueb078 ueb079 ueb080 ueb081 ueb082 Name Bechert, Lars Boywitz, David Börner, Michael Drescher, Sebastian Engelhardt, Max Hahn, Andreas Henneberg, Maria Hercher, Stephanie Kadanik, Lisa Kieu Tien, Dung Lesser, Martin Liu, Qifang Mothes, Augustin Login ueb083 ueb084 ueb085 ueb086 ueb087 ueb088 ueb089 ueb090 ueb091 ueb092 ueb093 ueb094 ueb095 Name Noe, Nicole Oehlenschläger, Sabine Pöschl, Nils Quadrat, Eric Sattler, Florian Schmidt, Alexandra Schmidt, Toni Schmieder, Ina Tang, Panpan Thiele, Raphael Yin, Nan Zhao, Tongjian • Nach dem ersten Einloggen auf der iibm08 werden Sie aufgefordert, ein neues Kennwort anzulegen, tun Sie dies! Sollte diese Aufforderung nicht erscheinen, ändern Sie es bitte selbst mit dem Befehl passwd. • Die iibm08 ist als Datenbankserver konzipiert. Benutzen Sie ihre Accounts also bitte nicht für das Surfen im Internet oder das Auslagern von Datenbeständen. • Bei Problemen senden Sie bitte eine E-Mail an unseren technischen Mitarbeiter Herrn Dr. Friedel ([email protected]) oder kontaktieren den Übungsleiter Herrn Liebisch ([email protected]). 2 DB2 – Einführung Die Arbeit mit DB2 erfolgt mit dem Command Line Processor (CLP), dessen wichtigste Optionen hier kurz erläutert werden sollen: db2 [option ...] [db2-command | sql-statement | [? [phrase | message | sqlstate | class-code]]] ? gibt einen Hilfetext zu dem spezifizierten DB2-Kommando oder der DB2(Fehler)Nachricht aus. Beipiel: > db2 ? options -t spezifiziert, dass das Trennzeichen für SQL-Anweisungen und DB2-Kommandos ein Semikolon (;) sein soll. Standard ist CR. -finfile liest die SQL-Anweisungen und DB2-Kommandos aus der angegebenen Datei infile. Beachten Sie hierzu die Option -t. Beispiel: > db2 -t -fscript.sql liest Anweisungen aus script.sql, die mit einem Semikolon getrennt sind. -zoutfile schreibt alle Ausgaben in die angegebene Datei outfile. +c deaktiviert das Auto-Commit, d.h. die ausgeführten SQL-Anweisungen werden erst dann wirksam, wenn Sie explizit den Befehl commit geben. Wollen Sie die abgeschickten Anweisungen rückgängig machen, so können Sie das mit rollback erreichen. -s Beendet die Ausführung eines Scripts, wenn ein Fehler aufgetreten ist. Standardverhalten ist das Weitergehen zur nächsten Anweisung. Der Programmaufruf > db2 -t wechselt in den interaktiven Modus des CLP (Anweisungen müssen mit ; abgeschlossen werden, s.o.). In den folgenden Beispielen wird, wenn nicht anders angegeben, davon ausgegangen, dass wir uns im interaktiven Modus befinden. Der interaktive Modus kann durch die Eingabe von db2 => quit; oder db2 => terminate; beendet werden. Benutzen Sie terminate, wenn Sie die Arbeit mit der Datenbank beenden wollen, dann werden alle gestarteten Prozesse entfernt und der allokierte Speicher freigegeben. Werden auf der Shell-Kommandozeile (nicht im interaktiven Modus) Anweisungen angegeben, die Sonderzeichen enthalten, so ist die Anweisung in doppelte Anführungszeichen zu setzen. Beipiel: > db2 -t "select * from Angest;" 2.1 Ausführung von SQL-Skripten Bei der Erstellung von Skripten können Sie Kommentare einfügen, indem Sie -- vor die Kommentarzeile stellen. Machen Sie von dieser Möglichkeit Gebrauch! Beispiel-Script create_table.sql: ------------------------------------------------ Beispiel fuer eine Create Table-Anweisung -----------------------------------------------create table Angest( PNr integer not null primary key, Name varchar(20) not null); commit; Die Ausführung erfolgt dann mit > db2 -t +c -s -fcreate_table.sql 2.2 Verbinden mit einer Datenbank Bevor man mit einer DB2-Datenbank, wie beispielsweise der Universitäts-DB unidb, arbeiten kann, muss man sich mit ihr verbinden. Dies geschieht über die DB2-Anweisung: db2 => connect to unidb; Nach dem Verbinden können Sie SQL-Anweisungen an ihre Tabellen in der Datenbank richten. Die Übungsdatenbank steht allen Übungsteilnehmern zur Verfügung, jedoch ist der Zugriff jeweils auf die unter dem eigenen Account angelegten Tabellen und anderen Datenbankobjekte beschränkt. Die Tabellennamen werden zusätzlich implizit mit dem Account-Namen (Schema) qualifiziert, so dass es nicht zu Namenskonflikten kommen kann. Um die Verbindung zu einer Datenbank wieder zu trennen, benutzen Sie die DB2-Anweisung: db2 => connect reset; Trennen Sie vor dem Ausloggen die Verbindung zur Datenbank und beenden Sie jeden gestarteten CLP mit db2 => terminate; bzw. > db2 -t terminate; wenn sie ihn vorher bereits mit quit verlassen haben. 2.3 DDL- und DML-Anweisungen Die Dokumentation zur verwendeten DB2-Version mit ausführlicher Beschreibung der Syntax und Semantik der zur Verfügung stehenden SQL-Anweisungen für die Datendefinition und Datenmanipulation steht im Web unter: http://publib.boulder.ibm.com/infocenter/db2luw/v9 Von besonderem Interesse ist dabei SQL Reference Vol. 1 bzw. SQL Reference Vol. 2.