Inhaltsverzeichnis

  • Vorwort
    17
  • TEIL I
    Erste Schritte
    23
  • 1
    Datenbanken – eine allgemeine Einleitung
    25
    • 1.1
      Grundlagen von Datenbanken
      25
      • 1.1.1
        Die Geschichte von Datenbanken
        25
      • 1.1.2
        Moderne Datenbanken und Datenmodelle
        27
      • 1.1.3
        Vorteile
        30
      • 1.1.4
        Nachteile von Datenbanksystemen
        32
      • 1.1.5
        Einsatzgebiete
        32
      • 1.1.6
        Anforderungen an ein Datenbankmanagementsystem
        36
    • 1.2
      MySQL
      40
      • 1.2.1
        Einleitung und Vorstellung
        40
      • 1.2.2
        Die Geschichte von MySQL
        43
      • 1.2.3
        Open Source und Lizenzen
        46
    • 1.3
      Zusammenfassung
      50
  • 2
    Datenbankmodellierung
    51
    • 2.1
      Einführung in den Datenbankentwurf
      51
      • 2.1.1
        Anforderungsanalyse
        52
      • 2.1.2
        Konzeptioneller Datenbankentwurf
        53
      • 2.1.3
        Logischer Datenbankentwurf
        54
      • 2.1.4
        Physischer Datenbankentwurf
        54
      • 2.1.5
        Der Datenbankentwurf im Überblick
        55
    • 2.2
      Ein konkretes Beispiel: Flughafenverwaltung
      56
    • 2.3
      Das relationale Datenbankenmodell
      58
      • 2.3.1
        Tabellen, Spalten und Zeilen
        58
      • 2.3.2
        Schlüssel identifizieren Datensätze
        60
      • 2.3.3
        Die relationale Algebra
        61
      • 2.3.4
        Joins
        66
    • 2.4
      Datenbankdesign
      70
      • 2.4.1
        Das ER-Diagramm
        70
      • 2.4.2
        Entitäten
        71
      • 2.4.3
        Beziehungen
        75
    • 2.5
      Normalformen
      83
      • 2.5.1
        Die erste Normalform
        85
      • 2.5.2
        Die zweite Normalform
        86
      • 2.5.3
        Die dritte Normalform
        88
      • 2.5.4
        Weitere Normalformen
        90
    • 2.6
      Zusammenfassung
      91
  • 3
    Schnellstart-Tutorial
    93
    • 3.1
      MySQL herunterladen
      93
    • 3.2
      Minimale Systemanforderungen
      94
    • 3.3
      MySQL installieren
      96
      • 3.3.1
        Schnellinstallation unter Windows
        96
      • 3.3.2
        Schnellinstallation unter Linux
        102
      • 3.3.3
        Schnellinstallation unter Mac OS X
        108
      • 3.3.4
        Weitere Softwareprodukte
        110
      • 3.3.5
        Zusammenfassung der Installation
        110
    • 3.4
      Endlich loslegen – MySQL ausprobieren
      110
    • 3.5
      Übersicht der wichtigsten Befehle
      114
      • 3.5.1
        Datenbanken anlegen und löschen
        115
      • 3.5.2
        Tabellen anlegen, Daten einfügen und löschen
        117
      • 3.5.3
        Datensätze anlegen, abfragen und löschen
        121
      • 3.5.4
        Datensätze abfragen und anzeigen
        123
    • 3.6
      Zusammenfassung
      124
  • 4
    Einführung in die Beispieldatenbank
    125
    • 4.1
      Die Datenbank für das Szenario anlegen
      125
    • 4.2
      Die Beispieldatenbank auf der Buch-DVD
      141
    • 4.3
      Hilfe bei der Arbeit mit MySQL
      143
      • 4.3.1
        Fehlermeldungen und Warnungen
        143
      • 4.3.2
        Online-Manual und weitere Anlaufstellen
        145
    • 4.4
      Zusammenfassung
      146
  • TEIL II
    MySQL-Administration
    149
  • 5
    Architektur
    151
    • 5.1
      Einführung
      151
      • 5.1.1
        Teile einer Datenbank – das Fünf-Schichten-Modell
        151
      • 5.1.2
        MySQL-Architektur
        157
    • 5.2
      Abfrageverarbeitung
      161
      • 5.2.1
        Der Query-Cache – das Kurzzeitgedächtnis von MySQL
        161
      • 5.2.2
        Der Optimierer – die Intelligenz von MySQL
        168
      • 5.2.3
        Execution-Engine – der Arbeiter von MySQL
        173
    • 5.3
      Transaktionen und Nebenläufigkeit
      173
      • 5.3.1
        Nebenläufigkeit
        174
      • 5.3.2
        Transaktionen
        175
      • 5.3.3
        Lock-Management
        187
    • 5.4
      Storage-Engines
      190
      • 5.4.1
        Grundlagen des Storage-Engine-Plugin-Systems
        191
      • 5.4.2
        InnoDB
        194
      • 5.4.3
        MyISAM
        201
      • 5.4.4
        MEMORY
        206
      • 5.4.5
        Sonstige Engines
        207
      • 5.4.6
        Fremdhersteller-Engines
        210
      • 5.4.7
        Percona und MariaDB
        211
      • 5.4.8
        Vergleichstabelle
        212
    • 5.5
      Zusammenfassung
      213
  • 6
    Manuelle Installation, Plugins und Upgrades
    215
    • 6.1
      Von neuen Quellen – MySQL selbst kompilieren und installieren
      216
      • 6.1.1
        Voraussetzungen
        216
      • 6.1.2
        MySQL kompilieren und installieren
        218
      • 6.1.3
        Die Installation grundlegend absichern
        223
      • 6.1.4
        Anlegen der Konfigurationsdatei
        229
      • 6.1.5
        Den MySQL-Dienst starten
        230
      • 6.1.6
        Zusammenfassung der Installation
        234
    • 6.2
      Usermanagement
      235
    • 6.3
      Die zentrale Konfigurationsdatei »my.cnf«
      242
      • 6.3.1
        Die Syntax der Konfigurationsdatei
        244
      • 6.3.2
        Die grundlegenden Einstellungen
        246
      • 6.3.3
        Kommandozeilenargumente
        249
      • 6.3.4
        Servervariablen setzen und ändern
        250
    • 6.4
      MySQL aktualisieren und erweitern
      254
      • 6.4.1
        Upgrades
        254
      • 6.4.2
        Die Plugin-API
        258
    • 6.5
      Zusammenfassung
      260
  • 7
    MySQL administrieren
    261
    • 7.1
      Der bordeigene Werkzeugkasten
      261
    • 7.2
      Der Name ist Programm: »mysqladmin«
      262
      • 7.2.1
        Datenbanken anlegen und löschen
        262
      • 7.2.2
        Caches leeren
        263
      • 7.2.3
        Das »root«-Passwort ändern
        264
      • 7.2.4
        Den Server überwachen
        267
    • 7.3
      Daten importieren und exportieren
      270
      • 7.3.1
        Daten aus Dateien importieren
        270
      • 7.3.2
        Daten exportieren
        276
    • 7.4
      Richtig sichern – Backups und Strategien
      278
      • 7.4.1
        Die Basics
        278
      • 7.4.2
        Physisches oder logisches Backup
        280
      • 7.4.3
        Online- und Offline-Backups
        282
      • 7.4.4
        Volle und inkrementelle Backups
        283
      • 7.4.5
        Logische Backups und Wiederherstellung mit »mysqldump«
        284
      • 7.4.6
        Physisches Offline-Backup – schnell, sicher und effizient
        288
      • 7.4.7
        InnoDB-Tabellen sichern mit »Percona XtraBackup«
        291
      • 7.4.8
        Recovery von Bedienfehlern – zeitpunktbezogene Wiederherstellung
        293
      • 7.4.9
        Backups mit Replikation
        296
      • 7.4.10
        Backups automatisieren
        297
    • 7.5
      Tabellenwartung mit »mysqlcheck«
      297
      • 7.5.1
        MyISAM-Tabellen überprüfen und reparieren
        298
      • 7.5.2
        Die Erholungsphase – Crash Recovery
        300
    • 7.6
      Performance-Check mit »mysqlslap«
      302
    • 7.7
      MySQL beobachten
      303
      • 7.7.1
        Die »INFORMATION_SCHEMA«-Tabellen
        303
      • 7.7.2
        Den Status abfragen
        304
      • 7.7.3
        Statistiken zu InnoDB-Tabellen
        305
      • 7.7.4
        MySQL überwachen
        307
    • 7.8
      Die grafischen Werkzeuge im Überblick
      308
      • 7.8.1
        MySQL Workbench
        308
      • 7.8.2
        Weitere Tools
        314
    • 7.9
      Optimierungstechniken
      314
      • 7.9.1
        Leistungsschau
        315
      • 7.9.2
        Profiling
        317
      • 7.9.3
        Das Percona Toolkit
        321
      • 7.9.4
        Die wichtigsten Variablen der zentralen Konfigurationsdatei im Überblick
        324
    • 7.10
      Exakte Statistiken mit dem Performance Schema
      341
      • 7.10.1
        Grundlagen des Performance Schemas
        341
      • 7.10.2
        Instrumente einrichten und Messvorgaben anpassen
        345
      • 7.10.3
        Anpassen der Einstellungen und Ausgabe von Statusvariablen
        352
      • 7.10.4
        Auswertung des Performance Schemas
        354
      • 7.10.5
        Den Gesamtüberblick mit Summary-Tabellen behalten
        357
      • 7.10.6
        Aufspüren von Problemen
        361
  • 8
    Replikation und Hochverfügbarkeit
    367
    • 8.1
      Grundprinzipien
      368
      • 8.1.1
        Ablauf
        369
      • 8.1.2
        Arten von Replikation
        369
    • 8.2
      Topologien
      371
      • 8.2.1
        Master – Slave
        371
      • 8.2.2
        Master – Slave mit zwischengeschaltetem Slave
        372
      • 8.2.3
        Master – Master
        373
    • 8.3
      Konfiguration
      374
      • 8.3.1
        Vorarbeiten
        375
      • 8.3.2
        Replikation über GTIDs
        376
      • 8.3.3
        Replikation über das Binär-Log
        379
    • 8.4
      Zusammenfassung
      383
  • 9
    Abfrageoptimierung
    385
    • 9.1
      Aufspüren von langsamen Abfragen
      385
      • 9.1.1
        Langsame Abfrage protokollieren
        385
      • 9.1.2
        Log-Dateien regelmäßig kontrollieren
        388
    • 9.2
      Indexstrukturen
      388
      • 9.2.1
        Die Grundidee von Indexstrukturen
        389
      • 9.2.2
        Primärindex vs. Sekundärindex
        390
      • 9.2.3
        Der limitierende Faktor – die Festplatte
        391
      • 9.2.4
        Technische Umsetzung von Indexstrukturen – der B-Baum und MyISAM
        392
      • 9.2.5
        Clustered Index
        397
      • 9.2.6
        Non-clustered Index
        398
      • 9.2.7
        Mehrdimensionale Indexstrukturen – der R-Baum
        398
      • 9.2.8
        GIS und raumbezogene Indizes
        402
      • 9.2.9
        Volltextindex
        411
      • 9.2.10
        Die großen Nachteile des Indexes
        420
    • 9.3
      Optimierung von Abfragen
      421
      • 9.3.1
        Die EXPLAIN-Anweisung
        421
      • 9.3.2
        Auswertung der EXPLAIN-Informationen und Optimierungen
        424
    • 9.4
      Partitionierung
      455
    • 9.5
      Zusammenfassung
      478
  • 10
    Sicherheit
    481
    • 10.1
      Grundlagen
      481
      • 10.1.1
        Verschiedene Szenarien für das Rechtemanagement
        481
      • 10.1.2
        Die zwei Phasen des Berechtigungssystems
        483
    • 10.2
      Privilegiert – die Benutzerrechte im Detail
      484
      • 10.2.1
        Die Ebenen der Benutzerberechtigungen
        486
      • 10.2.2
        Berechtigungen zum Schutz der Daten
        489
      • 10.2.3
        Berechtigungen zur Programmierung mit MySQL
        494
      • 10.2.4
        Das Sicherheitskonzept von Programmen oder DEFINER vs. INVOKER
        496
      • 10.2.5
        Berechtigungen zur Administration von MySQL
        500
      • 10.2.6
        Die Befehle GRANT, REVOKE, CREATE und ALTER USER im Detail
        505
      • 10.2.7
        Benutzerverwaltung ohne GRANT – die Datenbank »mysql«
        511
    • 10.3
      Tipps und Tricks
      517
      • 10.3.1
        Vorgehen bei der Erstellung von Benutzern
        518
      • 10.3.2
        Tausende Benutzer und Datenbanken ohne Chaos verwalten
        518
      • 10.3.3
        Benutzerverwaltungs-API
        520
      • 10.3.4
        Benutzerverwaltung in der Applikation, nicht in der Datenbank?
        521
      • 10.3.5
        Workaround für Berechtigungen auf Zeilenebene/Kapselung
        523
    • 10.4
      STOP! – MySQL absichern
      526
      • 10.4.1
        Allgemeine Sicherheitshinweise – der gewissenhafte Administrator
        526
      • 10.4.2
        Zugang beschränken oder verschlüsseln
        532
      • 10.4.3
        MySQL im Web
        537
    • 10.5
      Zusammenfassung
      542
  • TEIL III
    Programmierung
    545
  • 11
    Gespeicherte Programme und Events
    547
    • 11.1
      Wozu gespeicherte Programme?
      547
      • 11.1.1
        Arten von gespeicherten Programmen
        549
      • 11.1.2
        MySQL Stored Program Language
        550
      • 11.1.3
        Grundlegendes Arbeiten mit gespeicherten Programmen
        551
      • 11.1.4
        Kommentare
        553
      • 11.1.5
        Datentypen
        555
      • 11.1.6
        Sicherung und Backup gespeicherter Programme und Sichten
        555
      • 11.1.7
        Rechte von gespeicherten Programmen
        556
      • 11.1.8
        Einschränkungen
        557
    • 11.2
      Gespeicherte Prozeduren
      557
      • 11.2.1
        Erzeugung gespeicherter Prozeduren
        558
      • 11.2.2
        Erweiterte Einstellungen beim Erzeugen von gespeicherten Prozeduren
        560
      • 11.2.3
        Verwendung gespeicherter Prozeduren
        561
      • 11.2.4
        Löschen von gespeicherten Prozeduren
        562
      • 11.2.5
        Bearbeiten gespeicherter Prozeduren
        562
      • 11.2.6
        Parameter
        564
      • 11.2.7
        Ergebnismengen
        569
    • 11.3
      Gespeicherte Funktionen
      569
      • 11.3.1
        Erzeugen von gespeicherten Funktionen
        570
      • 11.3.2
        Erweiterte Optionen beim Erzeugen von gespeicherten Prozeduren
        572
      • 11.3.3
        Aufrufen gespeicherter Funktionen
        574
      • 11.3.4
        Bearbeiten gespeicherter Funktionen
        576
      • 11.3.5
        Einschränkungen
        576
    • 11.4
      Informationen zu bestehenden gespeicherten Programmen (Metadaten)
      577
    • 11.5
      Programmieren in MySQL
      581
      • 11.5.1
        BEGIN-/END-Blöcke
        582
      • 11.5.2
        Variablen
        583
      • 11.5.3
        Ablaufsteuerung und konditionale Anweisungen
        590
      • 11.5.4
        Schleifen
        597
      • 11.5.5
        Cursors
        602
      • 11.5.6
        Handler
        609
      • 11.5.7
        Selbstdefinierte Fehlermeldungen mit SIGNAL
        618
      • 11.5.8
        Verschachtelte Cursors und ihre Handler
        623
      • 11.5.9
        Temporäre Tabellen
        626
      • 11.5.10
        Rekursion
        627
      • 11.5.11
        Transaktionen
        630
    • 11.6
      Trigger
      632
      • 11.6.1
        Trigger erstellen
        632
      • 11.6.2
        Löschen und Bearbeiten von Triggern
        637
      • 11.6.3
        Informationen über bestehende Trigger (Metadaten)
        637
      • 11.6.4
        Einschränkungen
        640
    • 11.7
      Events
      641
      • 11.7.1
        Event-Scheduler
        642
      • 11.7.2
        Erzeugung von Events
        643
      • 11.7.3
        Löschen und Bearbeiten von Events
        647
      • 11.7.4
        Informationen zu bestehenden Events (Metadaten)
        648
      • 11.7.5
        Sicherheit, Rechte und Einschränkungen
        650
    • 11.8
      Sichten (Views)
      651
      • 11.8.1
        Erzeugung und Verwenden von Sichten
        652
      • 11.8.2
        Updates auf Sichten
        654
      • 11.8.3
        Löschen und Bearbeiten einer Sicht
        655
      • 11.8.4
        Informationen zu bestehenden Sichten (Metadaten)
        656
    • 11.9
      Zusammenfassung
      657
  • 12
    Softwareentwicklung mit MySQL
    659
    • 12.1
      Konnektoren/Programmiersprachen
      661
      • 12.1.1
        Allgemeines
        661
      • 12.1.2
        ODBC
        665
      • 12.1.3
        Java, JDBC und Connector/J
        669
      • 12.1.4
        PHP, mysqli, PDO_MYSQL
        674
      • 12.1.5
        .NET
        678
      • 12.1.6
        Perl, DBD:mysql
        684
      • 12.1.7
        Ruby
        687
      • 12.1.8
        Python
        689
      • 12.1.9
        node-mysql, Node.js – serverseitiges JavaScript
        692
    • 12.2
      Zusammenfassung
      695
  • 13
    NoSQL mit MySQL
    697
    • 13.1
      Not Only SQL – NoSQL
      697
    • 13.2
      Skalierung und Verteilung: ACID vs. BASE
      699
    • 13.3
      Mit Hochgeschwindigkeit ins Herz: MySQL öffnet sich »Memcached«-Benutzern
      700
      • 13.3.1
        Die Integration von Memcached in die MySQL-Architektur
        701
      • 13.3.2
        Grundlagen des Memcache-Protokolls
        702
      • 13.3.3
        Memcached zur Verwendung mit InnoDB installieren
        703
      • 13.3.4
        Die Verbindung testen
        705
      • 13.3.5
        Memcached und InnoDB verbinden
        706
      • 13.3.6
        Lesen und Schreiben von Daten mittels Memcached
        709
      • 13.3.7
        Replikation und Memcached
        711
      • 13.3.8
        Sicherheit gegen Geschwindigkeit
        712
      • 13.3.9
        Weitere Einstellungen
        712
    • 13.4
      Zusammenfassung
      714
  • TEIL IV
    Anhang
    715
  • A
    Referenz
    717
    • A.1
      Datentypen
      718
    • A.2
      Datendefinition, Datenmanipulation und Abfragen
      720
    • A.3
      Index
      726
    • A.4
      Boolesche Operatoren
      727
    • A.5
      Mathematische Funktionen
      728
    • A.6
      Zeit- und Datumsfunktionen
      730
    • A.7
      String-Funktionen
      737
    • A.8
      Transaktionen
      744
    • A.9
      Sperren
      746
    • A.10
      Sichten (Views)
      746
    • A.11
      MySQL-Client
      747
    • A.12
      Gespeicherte Prozeduren
      749
    • A.13
      Gespeicherte Funktionen
      751
    • A.14
      Triggers
      752
    • A.15
      Events
      753
    • A.16
      Kontrollfluss-Elemente
      755
    • A.17
      Variablen in Programmen
      757
    • A.18
      Cursors
      758
    • A.19
      Handlers
      759
    • A.20
      Volltextsuche
      761
    • A.21
      Replikation
      762
    • A.22
      GIS-Funktionen
      764
    • A.23
      Partitionierung
      766
    • A.24
      Administrationsaufgaben
      769
    • A.25
      Benutzerverwaltung und Sicherheit
      773
    • A.26
      Wartungsarbeiten
      777
    • A.27
      Backups, Wiederherstellung und Logfiles
      779
    • A.28
      Import und Export
      781
    • A.29
      Benchmarking, Monitoring und Profiling
      782
    • A.30
      Query-Cache
      784
    • A.31
      Plugins
      784
    • A.32
      Storage-Engines
      785
    • A.33
      Hilfe, Warnungen und Fehler
      788
    • A.34
      Fehlernummern und SQL-States
      789
    • A.35
      Escape-Sequenzen
      791
    • A.36
      Zeichensätze und Sortierfolgen (Character Sets und Collations)
      792
  • Index
    793