ebook img

Datenbanken und SQL: Eine praxisorientierte Einführung mit Anwendungen in Oracle, SQL Server und MySQL PDF

354 Pages·2014·9.08 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Datenbanken und SQL: Eine praxisorientierte Einführung mit Anwendungen in Oracle, SQL Server und MySQL

Informatik & Praxis Edwin Schicker Datenbanken und SQL Eine praxisorientierte Einführung mit Anwendungen in Oracle, SQL Server und MySQL 4. Auflage Informatik & Praxis Herausgegebenvon Prof.Dr.HelmutEirund Prof.Dr.HerbertKopp Prof.Dr.AxelViereck Edwin Schicker Datenbanken und SQL Eine praxisorientierte Einführung mit Anwendungen in Oracle, SQL Server und MySQL 4., überarbeitete Auflage EdwinSchicker FakultätInformatikundMathematik OTHRegensburg Regensburg,Deutschland ISSN1615-8245 ISBN978-3-8348-1732-7 ISBN978-3-8348-2185-0(eBook) DOI10.1007/978-3-8348-2185-0 DieDeutscheNationalbibliothekverzeichnetdiesePublikationinderDeutschenNationalbibliografie;de- tailliertebibliografischeDatensindimInternetüberhttp://dnb.d-nb.deabrufbar. SpringerVieweg ©SpringerFachmedienWiesbaden1996,1999,2000,2014 DasWerkeinschließlichallerseinerTeileisturheberrechtlichgeschützt.JedeVerwertung,dienichtaus- drücklichvomUrheberrechtsgesetzzugelassenist,bedarfdervorherigenZustimmungdesVerlags.Dasgilt insbesonderefürVervielfältigungen,Bearbeitungen,Übersetzungen,MikroverfilmungenunddieEinspei- cherungundVerarbeitunginelektronischenSystemen. DieWiedergabe vonGebrauchsnamen,Handelsnamen,Warenbezeichnungenusw.indiesemWerkbe- rechtigtauchohnebesondereKennzeichnungnichtzuderAnnahme,dasssolcheNamenimSinneder Warenzeichen-undMarkenschutz-Gesetzgebungalsfreizubetrachtenwärenunddahervonjedermann benutztwerdendürften. GedrucktaufsäurefreiemundchlorfreigebleichtemPapier. Springer ViewegisteineMarkevonSpringerDE.Springer DEistTeilderFachverlagsgruppeSpringer Science+BusinessMedia www.springer-vieweg.de Vorwort Datenbanken entstandenabetwa1960ausderNotwendigkeit,dielogischenZugriffeauf dieimmergrößerwerdendenDatenmengenderGroßrechnerzuvereinfachenundzunor- mieren. Inzwischen haben Datenbanken längstihren Siegeszug in nahezuallen Anwen- dungsbereichenangetreten.FürdieserasanteEntwicklungzeichnenvorallemdreiGründe verantwortlich: Erstens stieg die Rechnerleistung in den letzten Jahrzehnten extrem an. Zweitensermöglichendienach1970entwickeltenrelationalenDatenbankeneinintuitives Erstellen vonDatenbanken mit einfachenZugriffen.Unddrittens unterstützen grafische Oberflächen den AnwenderundDatenbankdesigner dankeiner intuitiven Benutzerfüh- rung. DamitwirddasErstelleneinerkleinenDatenbankfastzumKinderspiel.Dochnurein korrektes Design gepaartmit wohlüberlegten strukturierten Zugriffen garantieren Flexi- bilität,ZuverlässigkeitundeineproblemlosespätereErweiterungderDatenbank.Erstein optimiertesDesignbasierendauftheoretischenGrundlagenundpraktischenErfahrungen sorgenfürKonsistenzundIntegritäteinerDatenbank.Nursoerhaltenwirfehlerfreieund widerspruchsfreieDatenbestände,diestetszugreifbarsind. DiesesBuch entstandausVorlesungenzuDatenbanken, dieich fürInformatiker und Mathematiker an der Technischen Hochschule Regensburg seit vielen Jahren lese. Ich möchte mit diesem Buch aber auch alle interessierten Laien und Nicht-Informatiker bewusstansprechen.DertheoretischeStoffwirdmittelszahlreicherBeispielesofortprak- tisch angewendet. Regelmäßige Zusammenfassungen erleichtern die Wiederholung und Reflexion des behandelten Stoffes. Zur Lernzielkontrolle dienen dem Autodidakten die zahlreichenÜbungsaufgaben.DerPraxisbezugwirdunterstütztdurcheineimBuchfort- laufendverwendeteBeispieldatenbank,dieimAnhangausführlichvorgestelltwird. DiesesBuchwendetsichvorallemanProgrammierer,diemitHilfevonSQLaufDaten- bankenzugreifenwollen,undanalle,diekleinebismittlereDatenbankenselbstentwerfen, erweitern undändernmöchten.DavieleKapitelvoneinanderunabhängigsind,empfeh- leichdiesesBuchausdrücklichauchalsNachschlagewerk.EinumfangreichesKapitelzur DatenbankprogrammierungerschließtzusätzlichdieWeltdesInternetsunddergrafischen Oberflächen. GanzgroblässtsichdiesesBuchindreiTeilegliedern.DieKap.1bis3gebenzunächst einenÜberblicküberDatenbankenundbeschäftigensichdannintensivmitAufbauund V VI Vorwort DesignvonrelationalenDatenbanken.DiesermehrtheoretischeStoffwirdimzweitenTeil durch die in den Kap. 4 und 5 behandelte Datenbanksprache SQL intensiv angewendet unddabeizusätzlicherheblichvertieft.DieInternet-ProgrammeinKap.6schließendie- senzweitenTeilab.ImdrittenTeilabKap.7werdenweiterführendeThemenvorgestellt.Es findensichKapitelzurPerformance,zurKorrektheitdergespeichertenDaten,zuMöglich- keiten des parallelen Datenzugriffs,zumSchutz vorDatenverlusten oderunberechtigten ZugriffenundzuverteiltenundobjektrelationalenDatenbanken. Kapitel1besprichtdieVorzügevonDatenbankengegenüberselbstverwaltetenDaten- beständen, erklärt die wichtigsten Datenbankbegriffe und gibt einen kleinen Überblick überdieLeistungsfähigkeitundMöglichkeitenvonDatenbanken.DiesesKapiteldientzur ÜbersichtundMotivationundistvorallemfürdenAnfängerempfehlenswert. Kapitel 2 und 3 beschäftigen sich mit relationalen Datenbanken. Sie sind zusammen mitderSpracheSQLabKap.4diezentralenKapiteldiesesBuches.HierliegtderFokusauf denMethodenzumErstelleneinerrelationalenDatenbankimDetail.DerAufbauvonRe- lationenzusammenmitdenbeidenIntegritätsregelnwirdvorgestellt.DieNormalformen vonRelationenunddasEntity-Relationship-ModellalsBasiswerkzeugezumDesignvon Datenbankenwerdenausführlichbehandelt. DieKap.4und5führenpraxisorientiertundumfassendindieDatenbankzugriffsspra- cheSQLein,wobeianHandvonBeispielenderStoffderKap.2und3wesentlichvertieft wird.Kapitel4befasstsichintensivmitdenZugriffsmöglichkeitenaufDatenbankenmittels SQL. In Kap. 5 gehen wir einen Schritt weiter und erzeugen Datenbanken mit geeigne- tenSQL-BefehlenundbeschäftigenunszusätzlichmitderVergabevonZugriffsrechtenin SQL.HierwerdenauchwichtigeThemenwieSicherheitundIntegritätbehandelt.InKap.6 wirdderSQL-TeilmitumfangreichenProgrammenabgeschlossen.Hiergreifenwirmittels HTMLundPHPvomInternetausdirektaufDatenbankenzu. DerdritteTeildientderWeiterführungundVertiefung.ErbeginntinKap.7miteiner EinführungindiePerformance.InKap.8folgendieimproduktivenEinsatzsehrwichtigen ThemenRecovery undConcurrency.Eswerden ausführlichdieerforderlichenMaßnah- menbeschrieben,umeinemplötzlichenRechnerabsturzruhigentgegenzusehenundum Parallelzugriffezuermöglichen. InKap.9werdendieGrundideenverteilterundobjektrelationalerDatenbankenvorge- stellt.DiesbeinhaltetdieGrundregelnderverteiltenDatenbankenundersteGehversuche mitderobjektrelationalenErweiterungderSpracheSQL. Geübt wird im gesamten Buch durchgehend mit Oracle, aber auch mit MySQL und SQLServer.DankdernormiertenSpracheSQLsinddiemeistenBeispielediesesBuches auchaufandereDatenbankendirektanwendbar.AufdiewenigenAbweichungenzwischen Oracle,SQLServerundMySQLwirdimmerexplizithingewiesen.DieBeispieldatenbank Bikewirddurchgängigverwendet,besondersintensivindenSQL-Kapiteln.DieseDaten- bankBikewirdimAnhangausführlichvorgestelltundistBasisfürallepraktischenÜbun- gendiesesBuches.InstallationsprogrammezumautomatischenErstellendieserDatenbank für Oracle, SQL Server und MySQL stehen im Internet kostenlos zur Verfügung. Ent- Vorwort VII sprechendeHinweisewerdenebenfallsimAnhanggegeben.JedesKapitelendetmiteiner Zusammenfassung,ÜbungsaufgabenundLiteraturhinweisen. SeitderdrittenAuflagesindvieleJahrevergangen.IndervorliegendenviertenAuflage wurdenalleKapitelvollständigüberarbeitet.VölligneusinddasKapitelzurProgrammie- rungmitPHPunddasKapitelüberPerformance.AuchdieBeispieldatenbankBikewurde weiter verbessert.DiezahlreichenzusätzlichenÄnderungensindauchaufdievielenAn- regungenvonLesernzurückzuführen.Dafürbedankeichmichsehrherzlich. Mein besonderer Dank gilt meiner Familie, deren Rücksicht und Verständnis dieses Bucherstermöglichten. Regensburg,imApril2014 Inhaltsverzeichnis 1 ÜbersichtüberDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 DefinitioneinerDatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 AnforderungenaneineDatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 DerDatenbank-Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 Datenbankmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.1 RelationaleDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4.2 ObjektorientierteDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4.3 HierarchischeundnetzwerkartigeDatenbanken . . . . . . . . . . . . 13 1.4.4 ModerneEntwicklungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5 Transaktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6 DasKonsistenzmodellACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.7 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2 DasRelationenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.1 BeispielzurelationalenDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2 RelationaleDatenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 Primärschlüssel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4 RelationaleIntegritätsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.1 Entitäts-Integritätsregel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4.2 Referenz-Integritätsregel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5 RelationaleAlgebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5.1 RelationaleOperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.5.2 Vereinigung,SchnittundDifferenz . . . . . . . . . . . . . . . . . . . . . 44 2.5.3 ProjektionundRestriktion . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5.4 Kreuzprodukt,VerbundundDivision . . . . . . . . . . . . . . . . . . . 45 2.5.5 EigenschaftenderrelationalenOperatoren . . . . . . . . . . . . . . . . 49 2.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.7 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 IX X Inhaltsverzeichnis 3 Datenbankdesign. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.1 Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.1.1 ErsteNormalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.1.2 FunktionaleAbhängigkeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.1.3 ZweiteNormalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.1.4 DritteNormalformnachBoyceundCodd . . . . . . . . . . . . . . . . 63 3.1.5 DritteNormalformnachCodd . . . . . . . . . . . . . . . . . . . . . . . . 65 3.1.6 VierteNormalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.1.7 FünfteNormalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.1.8 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.2 Entity-Relationship-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.2.1 Entitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.2.2 Beziehungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.2.3 Beziehungsrelationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.2.4 Fremdschlüsseleigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.2.5 SchwacheEntitätenundSubtypen . . . . . . . . . . . . . . . . . . . . . . 91 3.2.6 Zusammenfassung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 3.3 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4 DieZugriffsspracheSQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1 DerAbfragebefehlSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.1.1 DerAufbaudesSelect-Befehls. . . . . . . . . . . . . . . . . . . . . . . . . 100 4.1.2 DieFrom-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.1.3 DieSelect-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.1.4 DieWhere-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.1.5 DieGroup-By-undHaving-Klausel . . . . . . . . . . . . . . . . . . . . . 117 4.1.6 Union,ExceptundIntersect . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.1.7 DerVerbund(Join) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.1.8 DeräußereVerbund(OuterJoin) . . . . . . . . . . . . . . . . . . . . . . 124 4.1.9 DieOrder-By-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.1.10 NullwerteunddieCoalesce-Funktion . . . . . . . . . . . . . . . . . . . 128 4.1.11 ArbeitsweisedesSelect-Befehls . . . . . . . . . . . . . . . . . . . . . . . . 129 4.2 MutationsbefehleinSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.3 TransaktionsbetriebmitSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.4 RelationaleAlgebraundSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 4.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 4.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5 DieBeschreibungsspracheSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5.1 Relationenerzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Inhaltsverzeichnis XI 5.1.1 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.1.2 Spalten-undTabellenbedingungen . . . . . . . . . . . . . . . . . . . . . 145 5.2 Relationenändernundlöschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.3 TemporäreRelationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.4 Sichten(Views). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 5.5 Zusicherungen(Assertions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.6 Gebiete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 5.7 Trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 5.8 Sequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 5.9 Zugriffsrechte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.10 Zugriffsschutz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 5.11 Integrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 5.12 AufbaueinerDatenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 5.12.1 InformationSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 5.12.2 DatenbankenundOracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 5.12.3 DatenbankenundSQLServer . . . . . . . . . . . . . . . . . . . . . . . . . 173 5.12.4 DatenbankenundMySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 5.13 EinrichtenundVerwaltenvonDatenbanken . . . . . . . . . . . . . . . . . . . . 174 5.13.1 OracleDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 5.13.2 SQLServerDatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 5.13.3 MySQLDatenbanken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 5.14 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 5.15 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6 DatenbankprogrammierungmitPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 6.1 ArbeitenmitPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 6.2 ÜberblickzuWebserver,HTMLundPHP . . . . . . . . . . . . . . . . . . . . . 185 6.2.1 InternetundWebserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 6.2.2 HypertextMarkupLanguage(HTML) . . . . . . . . . . . . . . . . . . . 186 6.2.3 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 6.2.4 FelderinPHP:einekurzeÜbersicht. . . . . . . . . . . . . . . . . . . . . 192 6.3 ErsteDatenbankzugriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 6.3.1 DatenbankzugriffmitPHP . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 6.3.2 DieDatenbankschnittstellePDO . . . . . . . . . . . . . . . . . . . . . . . 195 6.3.3 ErsterPHP-ZugriffaufDatenbanken . . . . . . . . . . . . . . . . . . . . 195 6.3.4 EinführungindieFehlerbehandlung . . . . . . . . . . . . . . . . . . . . 199 6.3.5 AuslesenmehrererDatenzeilen . . . . . . . . . . . . . . . . . . . . . . . . 201 6.4 KomplexereDatenbankzugriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.4.1 Sessionvariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 6.4.2 MehrfacheLesezugriffeaufDatenbanken . . . . . . . . . . . . . . . . . 208 6.4.3 EineGUIzurEingabevonSQL-Befehlen . . . . . . . . . . . . . . . . . 210

Description:
Ziel dieses Buches ist es, dem Leser fundierte Grundkenntnisse in Datenbanken und SQL zu vermitteln. Zahlreiche Zusammenfassungen und Übungsaufgaben zu jedem Kapitel dienen der Vertiefung des Stoffes und erhöhen den Lernerfolg. Die Schwerpunkte des Buches sind relationale Datenbanken, Entwurf von
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.