JOrgen Marsch und J6rg Fritze SQL Eine praxisorientierte Einfuhrung
Aus dem Programm Management und EDV Zielorientiertes Informationsmanagement Ein Leitfaden zum Einsatz und Nutzen des Produktionsfaktors Information von H. Fickenscher, P. Hanke, K.-H. Kollmann VM/CMS - Virtuelle Maschinen herausgegeben von A. Kolacki OfficeVision auf dem AS/400 Eine praxisorientierte EinfUhrung von D. Sieberichs SQL Eine praxisorientierte EinfOhrung von JOrgen Marsch und Jorg Fritze Btx und DFO auf dem PC Ein praxisorientierter Leitfaden zum Thema Datenfernverarbeitung, Telekommunikation und Bildschirmtext von A. Darimont Kommunikationsanalyseverfahren Theoretische Konzepte, Anwendungspraxis und Perspektiven zur Gestaltung von Informationssystemen von U. Frank und J. Kronen Modernes Projektmanagement Eine Anleitung zur effektiven Unterstutzung der Planung, DurchfUhrung und Steuerung von Projekten von E. Wischnewski Software-Engineering fur Programmierer von Heinz Knoth Vieweg
JOrgen Marsch und Jorg Fritze SQL Eine praxisorientierte Einfuhrung II vleweg
Die Deutsche Bibliothek - CIP-Einheitsaufnahme Marsch, Jiirgeru SQL: eine praxisorientierte EinfUhrung / JUrgen Marsch und JOrg Fritze. - Braunschweig; Wiesbaden: Vieweg, 1993 NE: Fritze, JOrg: Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Die Autoren und der Verlag iibernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung iibernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. AIle Rechte vorbehalten to Friedr. Vieweg & Sohn Verlagsgesellschaft mbh, BraunschweigIWiesbaden, 1993 Softcover repeint of the hardcover 1 st edition 1993 Der Verlag Vieweg ist ein Unternehmen der Verlagsgruppe Bertelsmann International. Das Werk einschlieblich aller seiner Teile ist urheberrechtlich geschiitzt. Jede Verwertung au13erhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzuliissig und strafbar. Das gilt insbesondere fur Vervielfaltigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Gedruckt auf saurefreiem Papier ISBN-13: 978-3-528-05210-2 001: 10.1007/978-3-322-87800-7 e-isbn-13: 978-3-322-87800-7
Vorwort v Vorwort Aufgrund des immer komplexer werdenden Informationsbedarfes hat die Bedeutung relationaler Datenbanksysteme in den letzten lahren rapide zugenommen. SQL ist die verbreitetste Abfragesprache fur diese Systeme, eine nicht-prozedurale Sprache mit hoher Leistungsfahigkeit. N atiirlich gibt es bereits eine Reihe von Lehrbiichem zu diesem Thema, hochwissenschaftliche und rein pragmatische Abhandlungen; die einen versuchen den Datenbanken mathematisch und theoretisch zu Leibe zu riicken, die anderen erwecken den Anschein, als ob SQL selbsterklarend sei, in wenigen Tagen erlembar und selbst bei komplexesten Problemen mit wenigen simplen Befehlen einzusetzen. Wir k6nnen aufgrund unserer Erfahrungen mit Datenbanksystemen zeigen, dab die Wahrheit, wie so oft, in der goldenen Mitte liegt. Dieses Buch wendet sich an Programmierer, DB-Benutzer usw.. kurz an aile, die SQL zukiinftig in der taglichen EDV-Arbeit einsetzen wollen, sowie an diejenigen, die nach ersten Erfahrungen im Umgang mit SQL festgestellt haben, dab gerade in dieser neuartigen Sprachform haufig Tips und Kniffe n6tig sind, um scheinbar leichte Aufgabenstellungen zu bewaltigen. Neben den SQL-Grundlagen wie TabeIlenersteIlung, ersten Abfragen usw. beinhaltet daher das vorliegende Buch Vorschlage und L6sungen zu diesen Problemen. Wenn man eine Datenbanksprache beschreiben will, kommt man nicht umhin, iiber Grundlagen und Design zu reden. Dies haben wir auch getan, uns allerdings auf das N6tigste beschrankt. Es gibt ja bekanntlich zwei Sorten von "EDV-Buch-Lesem": Die sorgfaltigen Leser, die mit dem Vorwort beginnend Seite fiir Seite der Literatur bearbeiten und der gegebenen Struktur folgend nach einer geraumen Wei Ie das gesamte Werk nutzbringend gelesen haben. Fiir diese Gruppe haben wir ein recht komplexes Beispiel eingeflochten, das wie ein roter Faden durch aile Kapitel hindurch die Theorie unterstiitzen soil.
vi Vorwort Der eher ungeduldige Lesertyp halt sieh nieht mit schmtickendem Beiwerk auf, er tiberschliigt zuniichst einftihrende Seiten, urn mit dem Inhaltsverzeiehnis zu beginnen. Die eine oder andere Uberschrift past genau in sein aktuelles Anwendungsproblem. Er sucht die entsprechende Seite, findet sie und trifft mit Entsetzen auf die n-te Fortsetzung eines Beispieles, das ihn an Folgen aus siidamerikanischen Endlos-Sagas erinnert, denen man nieht mehr folgen kann, wenn man einmal einen Teil der Serie verpabt hat. Was hier benotigt wird, ist ein kleines, leicht durchschaubares Beispiel, urn den Sachverhalt zu verdeutlichen. Auch diese werden Sie zusiitzlich an vielen Stellen irn Buch finden. Die Autoren wtinschen Ihnen viel Erfolg und spas beim Lesen und Nutzen dieses SQL-Buches. An Kommentaren, Anregungen und Kritiken sind wir, die Autoren, ebenso wie der Verlag interessiert. Bitte schieken Sie diese an: Verlag Vieweg Lektorat InformatiklComputerliteratur Faulbrunnenstr.13 W-6200 Wiesbaden Jtirgen Marsch, Jorg Fritze Iserlohn, irn September 1992
I nhaltsobersicht vii Inhaltsubersicht 1 Kurzer AbriB der Entwicklung von Datenbanksystemen... 1 2 Entwurf relationaler Datenbanken... 13 3 SQl Uberblick... 31 4 Vom Entwurf zur Datenbank... 39 5 Datenbank Abfragen... 54 6 Transaktionsprogrammierung... 135 7 Embedded SQl... 176 8 Benutzersichten (Views)... 195 9 Del - Befehle... 204 Anhang... 214
viii Inhalt Inhalt 1 Kurzer Abri6 der Entwicklung von Datenbanksystemen... 1 1.1 Sinn von Datenbanksystemen... 1 1.2 Entwicklungsgeschichte der Datenbanksysteme... 3 1.3 Hierarchisches Modell... 5 1.4 Netzwerkmodell... 6 1.5 Relationales Modell... 7 Zusammenfassung... 12 2 Entwurf relationaler Datenbanken... 13 2.1 Das Drei-Ebenen Modell... 13 2.2 Der Entity-Relationship Entwurf... 17 2.3 Vom ER-Modell zur relationalen Datenbank... 23 2.4 Normalisierung... 24 Zusammenfassung... 29 Obungen... 30 3 SQL Uberblick... 31 Zusammenfassung... 37 4 Yom Entwurf zur Datenbank... 39 Zusammenfassung... 51 Obungen... 52
Inhalt ix 5 Datenbank Abfragen... 54 5.1 Einfache Abfragen... 56 5.2 Built-In Funktionen und Arithmetik... 65 5.3 GROUP BY... HAVING... 73 5.4 Joins I: Inner Joins... 79 5.5 Ein Modell fur SELECT... 89 5.6 Joins II: Outer Joins... 91 5.7 Subqueries I: Single-Row-Subqueries... 96 5.8 Subqueries II: Multiple-Row-Subqueries... 102 5.9 Subqueries Ill: Correlated Subqueries... ll1 5.1 0 Kombination von unabhangigen Abfragen... 119 5.11 Weitere Beispiele zu SELECT... 124 Zusammenfassung... 131 Ubungen... 132 6 Transaktionsprogrammierung... 135 6.1 Das Transaktionskonzept... 136 6.2 INSERT... 138 6.3 DELETE... 140 6.4 UPDATE... 141 6.5 Probleme mit DELETE und UPDATE... 143 6.6 SQL-Programme... 151
x Inhalt Zusammenfassung... 172 Dbungen... 173 7 Embedded SQL... 176 Zusammenfassung... 194 8 Benutzersichten (Views)........ 195 8.1 Vorteile und Grenzen von Views... 195 8.2 Erstellen von Views... 196 8.3 Views zur Datenaktualisierung... 198 8.4 Views auf mehrere Tabellen... 199 8.5 Loschen von Views... 200 8.6 Viewspeicherung in Systemtabellen... 201 Zusammenfassung... 201 Dbungen... 203 9 DeL - Befehle... 204 9.1 Benutzer und ihre Rechte... 204 9.2 Tabellenzugriffsarten... 206 9.3 Zugriff auf das SQL-System... 206 Zusammenfassung... 212 Dbungen... 213 Anhang... 214 Syntax der SQL-Befehle... 214
Inhalt xi Losungen zu ausgewahlten Ubungen... 217 Literaturverzeichnis... 234 Sachwortverzeichnis... 237