Table Of ContentInformatik & 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