MySQL
9783827317629, 3827317622 [PDF]
145
112
6MB
German
Pages 624
Report DMCA / Copyright
DOWNLOAD PDF FILE
Table of contents :
MySQL - Einführung, Programmierung, Referenz......Page 3
Anhang......Page 5
Testumgebung einrichten......Page 7
Datenbankdesign......Page 8
Sicherheit......Page 9
PHP......Page 10
MyODBC......Page 11
MySQL für Profis......Page 12
MySQL-Tools......Page 13
Anhang......Page 14
Was bietet dieses Buch?......Page 15
Versionen......Page 17
Schreibweisen......Page 18
Abkürzungen......Page 19
Teil 1: Einführung......Page 21
Was ist MySQL?......Page 23
Relationen, Datenbanksysteme, Server und Clients......Page 24
Relationale versus objektorientierte Datenbanksysteme......Page 25
Tabelle, Datensatz, Feld, Abfrage, SQL, Index und Schlüssel......Page 26
MySQL......Page 27
Eigenschaften von MySQL......Page 28
Einschränkungen......Page 29
ANSI-SQL/92-Einschränkungen......Page 30
Weitere Einschränkungen......Page 32
MySQL 4.0......Page 33
Rechte und Pflichten gemäß der GPL......Page 34
MySQL-Lizenzierung in der Praxis......Page 35
Einsatz von MySQL mit einer kommerziellen Lizenz......Page 36
Alternativen zu MySQL......Page 37
Fazit......Page 38
Testumgebung einrichten......Page 41
Entwicklungsumgebung......Page 42
MySQL (Server-Installation)......Page 43
Versionsnummern......Page 44
Windows NT, Windows 2000 etc.......Page 45
Red Hat: Installation der mitgelieferten Version......Page 48
SuSE: Installation der mitgelieferten Version......Page 49
Red Hat und SuSE: Installation einer neueren Version......Page 50
Inkompatibilitäten nach der Installation der Pakete von www. mysql. com......Page 51
Installation testen......Page 52
Sicherheit......Page 53
Update unter Windows......Page 54
MySQL (Client-Installation)......Page 55
Unix/Linux......Page 56
Konfigurationsdatei......Page 57
Apache nach Änderung von httpd. conf neu starten......Page 58
Zugriffsschutz für einzelne Verzeichnisse (.htaccess)......Page 59
Passwort-Datei......Page 60
Zugriff auf ein geschütztes Verzeichnis......Page 61
CGI-Version versus Apache-Modul......Page 62
PHP-Interpreter bei Apache anmelden......Page 63
PHP4-Installation als Apache-Modul unter Linux......Page 65
PHP-Installation testen......Page 66
PHP-Konfiguration......Page 67
Installation......Page 68
Zugriff auf phpMyAdmin durch ein Passwort absichern......Page 69
Perl-Installation unter Linux......Page 70
Perl-Installation testen......Page 71
Installation von DBI und DBD-Mysql unter Linux......Page 72
Test von DBI und DBD-Mysql......Page 73
CGI auf Unix/Linux-Rechnern......Page 74
CGI-Scripts testen......Page 75
myODBC......Page 76
Setup-Programm......Page 77
Emacs/XEmacs......Page 79
MySQL beim ISP nutzen......Page 80
MySQL-Administration beim ISP mit phpMyAdmin......Page 81
Datenbank-Upload......Page 82
Einführungsbeispiel (Umfrage)......Page 83
Überblick......Page 84
mysql ausführen......Page 85
Datenbank anlegen......Page 87
Tabelle anlegen......Page 88
Warum kompliziert, wenn es doch viel einfacher ginge?......Page 90
Umfrageformular......Page 91
Verbindung zur Datenbank herstellen (mysql_connectinfo. inc. php)......Page 92
Formulardaten auswerten und in der Datenbank speichern......Page 94
Programmcode (results. php)......Page 95
Der resultierende HTML-Code......Page 97
Verbesserungsideen......Page 98
Teil II: Grundlagen......Page 101
Benutzeroberflächen......Page 103
Kurzbeschreibung einiger weiterer Programme......Page 104
mysql und andere MySQL-Kommandos starten......Page 106
MySQL interaktiv verwenden......Page 108
Eingabeerleichterungen......Page 109
Tipps zur Verwendung von mysql unter Unix/Linux......Page 110
Tipps zur Verwendung von mysql unter Windows......Page 111
WinMySQLadmin (Windows)......Page 113
MySQL-Konfiguration......Page 114
Datenbankschema anzeigen......Page 116
WinMySQLadmin als Sicherheitsrisiko......Page 117
Wenn WinMySQLadmin nicht funktioniert......Page 118
Überblick über die Benutzeroberfläche......Page 119
Installationsvarianten......Page 121
Konfiguration des MySQL-Zugriffs......Page 122
Sicherere Authentifizierung......Page 123
Mehrere MySQL-Server mit phpMyAdmin warten......Page 124
Weitere Konfigurationsmöglichkeiten......Page 125
Tabellen erzeugen......Page 126
Tabellendesign ändern......Page 127
Daten in eine Tabelle einfügen......Page 128
Tabelleninhalt anzeigen......Page 129
SQL-Kommandos aus Datei ausführen......Page 130
SQL-Abfragegenerator......Page 131
Backups durchführen, Datenbankschema speichern......Page 132
Datenbank-Upload......Page 133
Einzelne Tabellen sichern......Page 134
Tabellen umbenennen und kopieren......Page 135
Verbindungsaufbau......Page 136
Tabellen erzeugen und verändern......Page 137
Formulare für PHP-Code erzeugen......Page 138
Datenbankdesign......Page 139
Weiterführende Literatur......Page 140
Normalformen......Page 141
Die erste Normalform......Page 142
Zweite Normalform......Page 143
Zweite Normalform, zweiter Versuch......Page 144
Dritte Normalform......Page 146
Namensgebung......Page 147
Weniger Theorie .........Page 148
Normalformen – Pro und Contra......Page 149
Relationen......Page 150
1:n-Relationen......Page 151
Primärschlüssel (primary key)......Page 153
Fremdschlüssel (foreign key)......Page 155
Referentielle Integrität......Page 156
Integer-Zahlen: xxxINT (M)......Page 157
Fließkommazahlen: FLOAT(M, D) und DOUBLE(M, D)......Page 158
Festkommazahlen: DECIMAL(P, S)......Page 159
Zeitpunkt der letzten Änderung: TIMESTAMP(M)......Page 160
Zeichenketten......Page 161
Binärdaten......Page 162
Aufzählungen: ENUM, SET......Page 163
Einführung......Page 165
Einschränkungen......Page 166
Zusammengesetzte Indizes......Page 167
Abfrage- und Indexoptimierung......Page 168
Beispiel 2......Page 170
MySQL-Tabellentypen......Page 171
Datenbanken, Tabellen und Indizes erzeugen......Page 174
Datenbank erzeugen (CREATE DATABASE)......Page 175
Tabellendesign ändern (ALTER TABLE)......Page 176
Daten einfügen (INSERT)......Page 177
Beispiel mylibrary (Bibliothek)......Page 178
Kategorien und Sprachen......Page 179
Datentypen......Page 180
Hierarchische Kategorisierung der Bücher......Page 181
Hierarchieprobleme......Page 182
Autorennamen in der titles-Tabelle......Page 183
Hierarchiereihenfolge in der categories-Tabelle......Page 186
Untergeordnete Kategorien in der categories-Tabelle suchen......Page 189
Übergeordnete Kategorien in der categories-Tabelle suchen......Page 190
Beispiel myforum (Diskussionsforum)......Page 191
Hierarchien zwischen Nachrichten......Page 192
Optimierung......Page 194
Vor- und Nachteile......Page 195
test_blob......Page 196
test_order_by......Page 197
importtable1, importtable2, exporttable......Page 198
SQL......Page 199
Voraussetzungen......Page 200
Einfache Abfragen (SELECT)......Page 201
Anzahl der Ergebnisdatensätze einschränken......Page 202
Ergebnisse sortieren......Page 203
Datensätze durch Bedingungen auswählen (WHERE, HAVING)......Page 204
JOINs über zwei Tabellen......Page 206
JOINs über drei und mehr Tabellen......Page 207
Syntaxvarianten......Page 209
Gruppierte Abfragen, Aggregatsfunktionen......Page 210
Backup durchführen......Page 211
Backup einer ganzen Datenbank erstellen......Page 212
Datensätze einfügen (INSERT)......Page 213
INSERT bei verknüpften Tabellen......Page 214
Datensätze verändern (UPDATE)......Page 215
Neue Tabellen erstellen......Page 216
Anzahl der Autoren ermitteln (mylibrary)......Page 217
Ungültige Datensätze bei 1:n-Relationen suchen (mylibrary)......Page 218
Ungültige Datensätze bei n:m-Relationen suchen (mylibrary)......Page 219
Temporäre Tabellen als Ersatz für Sub-SELECTs (myforum)......Page 221
Weitere Beispiele......Page 223
Sicherheit......Page 225
Username, Hostname und Passwort......Page 226
Default-Sicherheitseinstellungen......Page 229
MySQL-Installation unter Unix/Linux absichern......Page 230
MySQL-Installation unter Windows absichern......Page 231
Zugang ohne Passwort einrichten......Page 233
Weitere Benutzer einrichten......Page 234
root-Passwort vergessen......Page 235
Privilegien......Page 237
Die mysql-Datenbank......Page 239
Die Tabellen der Datenbank......Page 240
Zugriffskontrolle......Page 241
Defaulteinstellung......Page 243
db-Tabelle......Page 244
host-Tabelle......Page 245
tables_priv- und columns_priv-Tabelle......Page 246
Zugriffsrechte ändern mit GRANT und REVOKE......Page 248
Neue Benutzer anlegen......Page 249
Passwort verändern......Page 250
Zugriffsrechte mit mysqlaccess betrachten......Page 251
Zugriffsrechte mit mysql_setpermission ändern......Page 252
Systemsicherheit......Page 253
Teil III: Programmierung......Page 257
PHP......Page 259
Probleme beim Verbindungsaufbau......Page 260
MySQL-Username und Passwort in einer Include-Datei angeben......Page 261
Verbindungsaufbau in der Include-Datei......Page 262
Einführungsbeispiel......Page 263
mysql_connect versus mysql_pconnect......Page 264
SQL-Kommandos ausführen......Page 265
Metainformationen zum Abfrageergebnis......Page 266
SELECT-Abfragen auswerten, Tabellen darstellen......Page 267
Spaltennamen und andere Meta-Informationen......Page 268
Beispiel: SELECT-Ergebnis als Tabelle anzeigen......Page 269
Daten ändern (INSERT, UPDATE, DELETE)......Page 271
Daten ändern......Page 272
Daten lesen......Page 274
Elemente eines ENUMs/SETs ermitteln......Page 275
Magic quotes (PHP)......Page 276
Magic-Quote-Defaulteinstellung......Page 277
Fehlerabsicherung......Page 278
Beispiel: Bücherverwaltung (mylibrary)......Page 279
Büchersuche (find.php)......Page 280
Effizienzprobleme bei der Darstellung von Suchergebnissen......Page 282
Codegerüst......Page 283
Formularvariablen......Page 284
Main-Code: Formular anzeigen......Page 285
SQL-Kommando für Titel- oder Autorensuche bilden......Page 286
SQL-Abfrage aus Formulardaten erstellen......Page 287
SQL-Abfrage aus URL-Variablen erstellen......Page 288
Ergebnisse für Autorensuche anzeigen......Page 290
Ergebnisse für Titelsuche anzeigen......Page 291
Links zu den vorangegangenen Seiten und zur nächsten Seite......Page 294
Erweiterungsmöglichkeiten......Page 295
Einfache Eingabe neuer Bücher (simpleinput.php)......Page 296
Programmstruktur, Codegerüst......Page 297
Main-Code (Titel speichern)......Page 298
Bedienung......Page 300
Programmstruktur......Page 302
Codegerüst......Page 303
Formularvariablen Phase 1......Page 304
Formularvariablen Phase 2......Page 305
Datenvalidierung, Wechsel zwischen Eingabephase 1 und 2......Page 306
Formular für Eingabephase 1 anzeigen......Page 307
Formular für Eingabephase 2 anzeigen......Page 308
sql_str, str_or_null, num_or_null: SQL-Hilfsfunktionen......Page 309
last_name_first, last_name_last: Funktionen zur Verarbeitung von Namen......Page 310
build_select_list: Funktion, um ein Listenfeld für das Formular zu bilden......Page 311
build_categories_select: Hierarchisches Listenfeld bilden......Page 312
show_publisher_options: Funktion zur Auswertung des Verlagsnamens......Page 313
restore_publisher_options: Verlagsauswahlfelder wiederherstellen......Page 316
show_authors_options und restore_authors_options: Autoreneingabe......Page 317
save_data: Funktion, um den neuen Datensatz zu speichern......Page 318
Erweiterungsmöglichkeiten......Page 321
Verwaltung der Buchkategorien (categories.php)......Page 322
Codegerüst......Page 324
Main-Code......Page 325
Hierarchische Liste aller Kategorien anzeigen......Page 326
Ausschnitt aus dem Hierarchiebaum darstellen......Page 327
insert_new_categories: Funktion zum Speichern einer neuen Kategorie......Page 329
delete_category: Funktion zum Löschen einer vorhandenen Kategorie......Page 331
Verbesserungsideen, Erweiterungsmöglichkeiten......Page 333
Bedienung......Page 334
Überblick über den Programmcode......Page 338
Session-Verwaltung......Page 339
Anmeldung (forumlogin.php)......Page 340
Neuen Benutzer anlegen (forumnewlogin.php)......Page 342
Liste aller Diskussionsgruppen anzeigen (forumlist. php)......Page 344
Nachrichtenliste einer Diskussionsgruppe (forumread. php)......Page 345
Programmcode......Page 348
SQL-Abfrage zur Ermittlung der Nachrichtentexte......Page 349
Nachrichtenliste anzeigen......Page 350
Verweise auf weitere Seiten......Page 351
Nachrichtentext darstellen (forummessage.php)......Page 352
Variablen......Page 355
Hilfsfunktionen......Page 356
Main-Code......Page 357
Formular anzeigen......Page 358
Erweiterungsmöglichkeiten......Page 361
Perl......Page 363
Die Module DBI und DBD:: mysql......Page 364
Konfigurationsdatei angeben......Page 365
Persistente Verbindungen......Page 366
SELECT-Abfragen......Page 367
SQL-Abfragen mit Platzhaltern für die Parameter......Page 368
Datensätze mit fetch alias fetchrow_ array lesen......Page 369
Spalten an Variablen binden......Page 370
Die Anzahl der Datensätze ermitteln......Page 371
Datensätze mit fetchrow_ arrayref lesen......Page 372
Alle Datensätze mit fetchall_ arrayref lesen......Page 373
Daten ändern......Page 375
Daten lesen......Page 376
Elemente eines ENUMs oder SETs ermitteln......Page 377
DBD::mysql-spezifische Methoden und Attribute......Page 378
mysql_store_results versus mysql_use_results......Page 379
Fehlerabsicherung......Page 380
Beispiel......Page 381
Beispiel: Ungültige Datensätze löschen (mylibrary)......Page 382
Programmcode......Page 383
CGI-Beispiel: Bücherverwaltung (mylibrary)......Page 384
Büchersuche (mylibrary-find.pl)......Page 385
Programmcode......Page 386
Formular auswerten, Suchergebnisse anzeigen......Page 387
Formular anzeigen......Page 388
Programmstruktur......Page 389
Buchtitel samt Autoren speichern......Page 390
Erweiterungsmöglichkeiten......Page 392
MyODBC......Page 393
MyODBC-Versionsnummer feststellen......Page 394
DSN für eine MySQL-Datenbank einrichten......Page 395
Einführung......Page 399
Voraussetzungen......Page 400
Importierte Tabellen versus verknüpfte Tabellen......Page 401
MySQL-Tabellen in Access importieren......Page 402
Access-Tabelle nach MySQL exportieren......Page 403
Konverter Access --> MySQL (exportsql.txt)......Page 404
Konverter MySQL --> Access (importsql. txt)......Page 405
Datenanalyse mit Excel......Page 406
Datenimport mit MS Query......Page 407
Einführung......Page 408
Voraussetzungen und Einschränkungen......Page 409
VB und MySQL – Anwendungsfälle......Page 410
Verbindungsaufbau mit DSN......Page 411
Verbindungsaufbau ohne DSN......Page 412
Verbindungsaufbau mit dem DataEnvironment......Page 413
Verbindungseigenschaften......Page 414
Null, Daten und Zeiten etc.......Page 416
AUTO_INCREMENT-Nummer nach dem Einfügen eines Datensatzes ermitteln......Page 417
SQL-Kommandos ausführen......Page 418
Umgang mit gebundenen Datenbanksteuerelementen......Page 420
Beispiel: authors-Spalte für titles-Tabelle......Page 421
Variante 1: Datenveränderung mit Read/Write-Recordset......Page 422
Variante 2: Datenveränderung mit conn. Execute......Page 423
Variante 1: Datenveränderung mit Read/Write-Recordset......Page 425
Variante 2: Datenveränderung mit conn.Execute......Page 427
VB-Programmierung ohne ADO und MyODBC......Page 428
Beispiel......Page 429
Eigenschaften von mssql2mysql......Page 431
Parametereinstellung......Page 432
Teil IV: Administration, MySQL für Profis......Page 435
Administration......Page 437
MySQL-Server indivduell einrichten......Page 438
MySQL-Server neu starten......Page 439
Datenbankschemas erforschen (mysqlshow)......Page 440
Administrationskommandos ausführen (mysqladmin)......Page 441
Backups durchführen......Page 443
Datenbanken sichern (mysqldump)......Page 444
mysqldump-Syntax......Page 445
Eine einzelne Datenbank wiederherstellen......Page 446
Schnelle Backups (mysqlhotcopy)......Page 447
Datenbank wiederherstellen......Page 448
Übertragung von Datenbanken zwischen MySQL-Systemen......Page 449
MySQL-Update von Version 3. 22 auf Version 3. 23......Page 450
Wechsel des Datenbanksystems......Page 451
Sonderzeichen in der importierten bzw. exportierten Datei......Page 452
Umgang mit Zeichenketten, Zahlen, Daten und BLOBs......Page 453
Beispiel 1......Page 454
Beispiel 2 (BLOB, NULL)......Page 455
CSV-Import......Page 456
Export mit SELECT ... INTO OUTFILE......Page 457
Beispiel......Page 458
Export mit mysqldump......Page 459
Zeilen und Spalten vertauschen......Page 460
HTML-Tabellen erzeugen......Page 461
Warum Logging?......Page 462
Änderungen in der Datenbank protokollieren......Page 463
Ort der Logging-Datei bestimmen......Page 464
Binäres Logging......Page 465
Login- und Operationsprotokoll......Page 466
Update-Protokolle......Page 467
Wartung von MyISAM-Tabellen......Page 468
Verwendung von myisamchk......Page 469
MyISAM-Tabellen verkleinern bzw. optimieren......Page 470
MyISAM-Tabellen reparieren......Page 471
Administration von Datenbanken beim ISP......Page 472
Einsatz eigener PHP-Scripts zur Administration......Page 473
Einsatz eigener Perl-Scripts zur Administration......Page 475
MySQL für Profis......Page 477
Defaultsortierordnung (Schwedisch)......Page 478
Sortierordnung einstellen......Page 479
Indizes neu erstellen......Page 480
Tests mit default-character-set=german1......Page 481
Volltextsuche......Page 482
Volltextsuche über mehrere Tabellen......Page 484
Einschränkungen......Page 485
MySQL selbst kompilieren......Page 486
Konfiguration......Page 487
Kompilation und Installation......Page 489
MySQL manuell starten, testen und beenden......Page 490
MySQL automatisch starten und beenden......Page 491
/etc/my. cnf einrichten......Page 492
Zugang zu MySQL-Dateien erleichtern......Page 493
MySQL mit BDB neu kompilieren und starten......Page 494
Einleitung......Page 495
Wozu Transaktionen?......Page 496
Einschränkungen......Page 497
Tabellen von MyISAM auf BDB umstellen......Page 498
BEGIN, COMMIT und ROLLBACK......Page 499
Fehlerabsicherung bei der Programmierung......Page 500
Wozu Replikation?......Page 501
Einschränkungen......Page 502
Replikationsbenutzer einrichten......Page 503
Server-Konfiguration......Page 504
Konfigurationsdatei......Page 505
master. info-Datei......Page 506
Sicherheitsüberlegungen......Page 507
Client-Programmierung......Page 508
Ausfallsichere Server-Auswahl......Page 509
Teil V: Referenz......Page 511
SQL-Referenz......Page 513
Groß- und Kleinschreibung......Page 514
Zeichenketten......Page 515
Datum und Uhrzeit......Page 516
Kommentare......Page 517
Operatoren......Page 518
Vergleichsoperatoren......Page 519
Mustervergleich mit REGEXP......Page 521
Binärer Zeichenkettenvergleich......Page 522
MySQL-Datentypen......Page 523
Kommandoübersicht (thematisch)......Page 524
Kommandoreferenz (alphabetisch)......Page 526
Funktionsreferenz......Page 553
Arithmetische Funktionen......Page 554
Bearbeitung von Zeichenketten......Page 555
Datum und Uhrzeit......Page 558
Datumsberechnungen......Page 559
Formatierung von Daten und Zeiten......Page 560
GROUP-BY-Funktionen......Page 561
Weitere Funktionen......Page 562
MySQL-Tools......Page 563
Überblick......Page 564
Gemeinsame Optionen......Page 565
Konfigurationsdateien......Page 567
Optionen in Umgebungsvariablen bzw. Systemvariablen......Page 569
mysqld (Server)......Page 570
Variablen......Page 573
mysql (SQL-Kommandointerpreter)......Page 574
mysqladmin (Administration)......Page 577
mysqldump (Backup/Export)......Page 579
mysqlimport (ASCII-Import, Bulkimport)......Page 581
mysqlshow (Infoanzeige)......Page 582
myisamchk (MyISAM-Dateien reparieren)......Page 583
myisampack (MyISAM-Dateien komprimieren)......Page 586
API-Referenz......Page 587
PHP-API......Page 588
Übliche Variablennamen......Page 591
Verbindungsaufbau......Page 592
SQL-Kommandos ausführen, SELECT-Abfragen auswerten......Page 593
MySQL-spezifische Erweiterung des DBD::mysql-Treibers......Page 596
Fehlernummern des MySQL-Servers......Page 599
Betriebssystemfehler, Fehler des MyISAM-Tabellentreibers......Page 604
MyISAM-Fehlernummern......Page 605
Beispielprogramme......Page 607
Quellenverzeichnis......Page 609
A......Page 611
B......Page 612
D......Page 613
E......Page 614
H......Page 615
K......Page 616
M......Page 617
P......Page 619
R......Page 620
S......Page 621
T......Page 622
Y......Page 623
Z......Page 624