1 Was ist MySQL? 29 2 Testumgebung einrichten 49 3 Einführungsbeispiel (Umfrage mit PHP) 99. Grundlagen 117



Ähnliche Dokumente
Michael Kofier. MySQL. Einführung, Programmierung, Referenz УУ ADDISON-WESLEY. An imprint of Pearson Education

MySQL. Michael Kofier. Einführung, Programmierung, Referenz ADDISON-WESLEY. 2., vollständig überarbeitete und erweiterte Auflage

Michael Kofler. MySQL. Einführung, Programmierung, Referenz. An imprint of Pearson Education

Inhalt. 1. MySQL-Einführung Datenbankentwurf 27

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Inhaltsverzeichnis. Vorwort Konzeption Teil I Einführung Was ist MySQL?...33

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Betriebshandbuch. MyInTouch Import Tool

mygesuad Download: Wamp/Lamp Systemumgebungen:

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

Kurzeinführung Excel2App. Version 1.0.0

Inhalt. Vorwort 11. Inhalt der Buch-CD Einführung 17

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Anleitung Redmine. Inhalt. Seite 1 von 11. Anleitung Redmine

PHPNuke Quick & Dirty

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

OP-LOG

Die neue Datenraum-Center-Administration in. Brainloop Secure Dataroom Service Version 8.30

ODBC-Treiber Programmübersicht

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Umzug der Datenbank Firebird auf MS SQL Server

FILEZILLA HANDBUCH

1. Einführung. 2. Weitere Konten anlegen

1. Loggen Sie sich mit Ihrem Benutzernamen in den Hosting-Manager (Confixx) auf Ihrer entsprechenden AREA ein. Automatische Wordpress Installation

Options- und Freitext-Modul Update-Anleitung

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

Anbindung an easybill.de

AppCenter Handbuch August 2015, Copyright Webland AG 2015

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Adminer: Installationsanleitung

Quickstep Server Update

Legen Sie nun dieses Verzeichnis mit dem Namen "joomla" hier an: C:xampphtdocs.

Workflow. Installationsanleitung

WordPress installieren mit Webhosting

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Eprog Starthilfe. 5. Oktober Einleitung 2

Kommunikations-Management

MS-SQL Client Installation

Anleitung zur Verwendung der VVW-Word-Vorlagen

FTP-Server einrichten mit automatischem Datenupload für

Anleitung. Datum: 28. Oktober 2013 Version: 1.2. Bildupload per FTP. FTP-Upload / Datei-Manager FTP. Glarotech GmbH

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Lehrveranstaltung Grundlagen von Datenbanken

INSTALLATION. Voraussetzungen

SharePoint Demonstration

Installationsanleitung

Aktualisierung zum Buch Windows und PostgreSQL

Planung für Organisation und Technik

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Tutorial Einrichtung eines lokalen MySQL-Servers für den Offline-Betrieb unter LiveView

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Administrator-Anleitung

Leichte-Sprache-Bilder

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen zu SQL Server Analysis Services-Daten

Folien php/mysql Kurs der Informatikdienste

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Arbeiten mit einem lokalen PostgreSQL-Server

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

Anleitung Captain Logfex 2013

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

INSTALLATION VON INSTANTRAILS 1.7

Schritt 1 - Registrierung und Anmeldung

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

SEMINAR Modifikation für die Nutzung des Community Builders

Installationsanleitung für. SugarCRM Open Source. Windows Einzelplatz

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen mit SQL Server-Daten

Dokumentation FileZilla. Servermanager

einrichtung in den kaufmännischen Programmen der WISO Reihe

GITS Steckbriefe Tutorial

Bei der Installation folgen Sie den Anweisungen des Installations- Assistenten.

Installationsanleitungen

4D Server v12 64-bit Version BETA VERSION

Installationsanleitung Webhost Linux Flex

Das Modul Hilfsmittel ermöglicht den Anwender die Verwaltung der internen Nachrichten, Notizen, Kontakte, Aufgaben und Termine.

Installationsanleitung CLX.PayMaker Home

Installation des Zertifikats. Installationsanleitung für Zertifikate zur Nutzung des ISBJ Trägerportals

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Installationsanleitung für OpenOffice.org Sprachpakete

Anleitung über den Umgang mit Schildern

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Bedienungsanleitung CAD-KAS Reklamationserfassung. Einen neuen Datensatz anlegen. Klicken Sie auf das + Symbol, um einen neuen Datensatz anzulegen.

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

Transkript:

Kapitelübersicht Vorwort 19 Konzeption 21 I Einführung 27 1 Was ist MySQL? 29 2 Testumgebung einrichten 49 3 Einführungsbeispiel (Umfrage mit PHP) 99 II Grundlagen 117 4 Benutzeroberflächen 119 5 Datenbankdesign 163 6 SQL-Einführung 227 7 SQL-Rezepte 251 8 InnoDB-Tabellen und Transaktionen 295 9 Sicherheit 319 10 Administration und Server-Konfiguration 369 III Programmierung 447 11 PHP Grundlagen und Programmiertechniken 449 12 PHP Bücherverwaltung 493 13 PHP Diskussionsforum 557 14 Perl 591 15 Java, JSP, JDBC 621 16 C und C++ 657 17 Visual Basic, C#, ODBC 683 IV Referenz 755 18 SQL-Referenz 757 19 MySQL-Tools 829 20 API-Referenz 863

6 Kapitelübersicht Anhang A Glossar 891 B MySQL 4.1 897 C Inhalt der CD-ROM 911 Quellenverzeichnis 915 Stichwortverzeichnis 917

Inhaltsverzeichnis Vorwort 19 Konzeption 21 1 EINFÜHRUNG 27 1 Was ist MySQL? 29 1.1 Was ist eine Datenbank? 30 1.2 MySQL 33 1.3 MySQL-Eigenschaften 33 1.4 MySQL-Einschränkungen 36 1.5 MySQL-Versionsnummern 38 1.6 MySQL-Lizenzierung 42 1.7 Alternativen zu MySQL 46 1.8 Fazit 47 2 Testumgebung einrichten 49 2.1 Windows oder Unix/Linux? 50 2.2 MySQL (Server-Installation) 51 2.2.1 Installation unter Windows 52 2.2.2 Installation unter Linux 58 2.2.3 Installation der MySQL-Linux-Pakete von mysql.com 60 2.2.4 Installation testen 64 2.2.5 Sicherheit 65 2.2.6 MySQL-Update durchführen 66 2.3 MySQL (Client-Installation) 67 2.4 Apache 68 2.4.1 Apache-2-Installation unter Windows 69 2.4.2 Installation unter Linux 70 2.4.3 Konfiguration und Start 71 2.4.4 Alias einrichten (virtuelles Verzeichnis) 73 2.4.5 Zugriffsschutz für einzelne Verzeichnisse (.htaccess) 74 2.5 PHP 77 2.5.1 PHP-Installation unter Windows 78 2.5.2 PHP-Installation unter Linux 79 2.5.3 PHP-Installation testen 80 2.5.4 PHP-Konfiguration (php.ini) 82 27

8 Inhaltsverzeichnis 2.6 phpmyadmin 84 2.7 Perl 87 2.7.1 Installation 88 2.7.2 MySQL-Unterstützung für Perl 89 2.7.3 Apache-Konfiguration für Perl und CGI 92 2.8 Connector/ODBC 95 2.9 Editoren 96 2.10 MySQL beim ISP nutzen 97 3 Einführungsbeispiel (Umfrage mit PHP) 99 3.1 Überblick 100 3.2 Datenbankentwurf 101 3.3 Umfrageformular 107 3.4 Formularauswertung und Ergebnisdarstellung 109 3.5 Verbesserungsideen 114 II GRUNDLAGEN 117 117 4 Benutzeroberflächen 119 4.1 Überblick 120 4.2 mysql 121 4.3 WinMySQLadmin (Windows) 129 4.4 MySQL Control Center (Windows, Linux) 133 4.5 phpmyadmin (HTML) 138 4.5.1 Überblick über die Benutzeroberfläche 138 4.5.2 Installation und Konfiguration 140 4.5.3 http- und cookie-authentifizierung 143 4.5.4 Datenbanken erstellen und ändern 146 4.5.5 Tabellendaten einfügen, anzeigen und ändern 148 4.5.6 Server-Administration 150 4.5.7 Zusatzfunktionen 154 5 Datenbankdesign 163 5.1 Einführung 164 5.2 Datenbanktheorie 165 5.2.1 Normalformen 165 5.2.2 Relationen 175 5.2.3 Primär- und Fremdschlüssel 178

Inhaltsverzeichnis 9 5.3 MySQL-Datentypen 182 5.3.1 Integerzahlen (xxxint) 183 5.3.2 Fließkommazahlen (FLOAT und DOUBLE) 185 5.3.3 Festkommazahlen (DECIMAL) 185 5.3.4 Datum und Uhrzeit (DATE, TIME, DATETIME, TIMESTAMP) 186 5.3.5 Zeichenketten (CHAR, VARCHAR, xxxtext) 188 5.3.6 Binärdaten (xxxblob) 189 5.3.7 Aufzählungen (ENUM, SET) 190 5.4 Indizes 192 5.4.1 Einführung 192 5.4.2 Indextypen 193 5.4.3 Abfrage- und Indexoptimierung 195 5.5 MySQL-Tabellentypen 198 5.6 Datenbanken, Tabellen und Indizes erzeugen 202 5.7 Beispiel mylibrary (Bibliothek) 206 5.7.1 Basisdesign 207 5.7.2 Hierarchische Kategorisierung der Bücher 209 5.7.3 Optimierung (Effizienz versus Normalisierung) 211 5.7.4 Indizes 219 5.8 Beispiel myforum (Diskussionsforum) 219 5.9 Beispiel exceptions (Sonderfälle) 224 6 SQL-Einführung 227 6.1 Einleitung 228 6.2 Einfache Abfragen (SELECT) 229 6.2.1 Anzahl der Ergebnisdatensätze einschränken (LIMIT) 231 6.2.2 Ergebnisse sortieren (ORDER BY) 232 6.2.3 Datensätze durch Bedingungen auswählen (WHERE, HAVING) 233 6.3 Abfragen aus verknüpften Tabellen 235 6.3.1 JOINs über zwei Tabellen 235 6.3.2 JOINs über drei und mehr Tabellen 236 6.4 Abfrageergebnisse aneinander fügen 239 6.5 Gruppierte Abfragen, Aggregatsfunktionen 240 6.6 Daten ändern (INSERT, UPDATE und DELETE) 243 6.6.1 Backup durchführen 243 6.6.2 Datensätze einfügen (INSERT) 245 6.6.3 Datensätze verändern (UPDATE) 247 6.6.4 Datensätze löschen (DELETE) 248 6.6.5 Neue Tabellen erstellen 249

10 Inhaltsverzeichnis 7 SQL-Rezepte 251 7.1 Zeichenketten 252 7.1.1 Grundlegende Funktionen 252 7.1.2 Mustervergleich 253 7.1.3 Zeichenketten ändern 255 7.2 Datum und Uhrzeit 256 7.2.1 Berechnungen mit Datum und Uhrzeit 258 7.2.2 TIMESTAMP-Besonderheiten 260 7.3 Variablen und Bedingungen (IF, CASE) 260 7.3.1 Variablen 261 7.3.2 IF-Abfragen 262 7.3.3 CASE-Verzweigungen 263 7.4 Daten von einer Tabelle in eine andere kopieren 264 7.4.1 Beim Kopieren eine neue Tabelle erzeugen 264 7.4.2 Kopieren in vorhandene Tabellen 265 7.5 Kreuztabellen (Pivottabellen) 266 7.6 Sub-SELECTs 270 7.7 Integrität von Daten sicherstellen 274 7.8 Doppelgänger suchen 279 7.9 Normalform nachträglich herstellen 280 7.10 Die ersten/letzten n Datensätze bearbeiten 282 7.11 Datensätze zufällig auswählen 284 7.12 Volltextsuche 287 7.12.1 Grundlagen 287 7.12.2 Büchersuche 291 7.12.3 Forumsuche 292 8 InnoDB-Tabellen und Transaktionen 295 8.1 Einführung 296 8.2 Erste Experimente mit InnoDB-Tabellen 300 8.3 Transaktionen 302 8.3.1 Wozu Transaktionen? 302 8.3.2 Transaktionen steuern 304 8.3.3 Transaktionen ausprobieren 305 8.3.4 Transaktionen und Locking 307 8.3.5 Isolationsgrad für Transaktionen 309 8.3.6 Fehlerabsicherung 312 8.4 Integritätsregeln 312

Inhaltsverzeichnis 11 9 Sicherheit 319 9.1 Einführung 320 9.2 Erste Hilfe 326 9.2.1 MySQL-Installation unter Unix/Linux absichern 326 9.2.2 MySQL-Installation unter Windows absichern 327 9.2.3 Zugang ohne Passwort einrichten 330 9.2.4 Neue Datenbank und Benutzer einrichten 330 9.2.5 Rechte zum Erzeugen eigener Datenbanken vergeben 331 9.2.6 Vergessenes root-passwort 332 9.3 Interna des Zugriffssystems 334 9.3.1 Privilegien 334 9.3.2 mysql-datenbank 337 9.3.3 user-tabelle 339 9.3.4 user.host-spalte 344 9.3.5 db- und host-tabelle 348 9.3.6 tables_priv- und columns_priv-tabelle 351 9.4 Hilfsmittel zur Einstellung der Zugriffsrechte 352 9.4.1 Zugriffsrechte ändern mit GRANT und REVOKE 353 9.4.2 Zugriffsrechte mit SHOW GRANTS betrachten 355 9.4.3 Passwort mit mysqladmin ändern 355 9.4.4 Zugriffsrechte mit mysqlaccess betrachten 356 9.4.5 Zugriffsrechte mit mysql_setpermission ändern 357 9.5 Probleme beim Verbindungsaufbau 359 9.6 Systemsicherheit 365 10 Administration und Server-Konfiguration 369 10.1 Basisadministration 370 10.1.1 Server-Basiskonfiguration 370 10.1.2 Administrationswerkzeuge verwenden 371 10.1.3 Datenbankschemas erforschen (mysqlshow) 372 10.1.4 Administrationskommandos ausführen (mysqladmin) 373 10.2 Backups durchführen 374 10.2.1 Datenbanken sichern (mysqldump) 375 10.2.2 Datenbanken wiederherstellen (mysql) 378 10.2.3 Schnelle Backups (mysqlhotcopy) 380 10.3 Datenbankmigration 382 10.4 Import und Export von Textdateien 386 10.4.1 Import mit LOAD DATA INFILE 388 10.4.2 Import mit mysqlimport 392 10.4.3 Export mit SELECT... INTO OUTFILE 393 10.4.4 Export mit mysqldump 395

12 Inhaltsverzeichnis 10.4.5 Export mit mysql im Batch-Modus 396 10.5 Internationale Anpassung, Zeichensätze 398 10.5.1 Fehlermeldungen in der jeweiligen Landessprache 398 10.5.2 Zeichensatzeinstellung und Sortierordnung 399 10.5.3 Tests mit einigen Zeichensätzen 401 10.6 Logging 403 10.6.1 Änderungen protokollieren (update log) 405 10.6.2 Fehler, Logins und langsame Abfragen 408 10.6.3 Administration der Logging-Dateien 410 10.7 Replikation 411 10.7.1 Einführung 411 10.7.2 Einrichtung des Replikations-Master-Systems 413 10.7.3 Einrichtung des Replikations-Slave-Systems 416 10.7.4 Replikationssystem mit LOAD DATA einrichten 418 10.7.5 Replikationsinterna 419 10.7.6 Client-Programmierung 421 10.8 Wartung von MyISAM-Tabellen 423 10.9 Administration von InnoDB-Tabellen 427 10.9.1 Tablespace-Administration 427 10.9.2 Logging-Dateien 433 10.9.3 Tipps zur Geschwindigkeitsoptimierung 436 10.10 Server-Tuning 437 10.10.1 Optimale Speichernutzung 438 10.10.2 Query Cache 440 10.11 Administration von Datenbanken beim ISP 443 III PROGRAMMIERUNG 447 447 11 PHP Grundlagen und Programmiertechniken 449 11.1 Einführung 450 11.2 Verbindung zur Datenbank herstellen 452 11.2.1 Verbindungsaufbau 452 11.2.2 MySQL-Benutzername und Passwort in einer Include-Datei angeben 453 11.2.3 Persistente Datenbankverbindungen 457 11.3 SQL-Kommandos ausführen 459 11.4 SELECT-Abfragen 461 11.4.1 Auswertung von SELECT-Abfragen 461 11.4.2 SELECT-Ergebnis als Tabelle anzeigen 463

Inhaltsverzeichnis 13 11.4.3 SELECT-Abfragen mit mysql_unbuffered_query 466 11.5 Daten ändern (INSERT, UPDATE, DELETE) 467 11.6 Zeichenketten, BLOBs, DATEs, SETs, ENUMs und NULL 469 11.6.1 Daten ändern 469 11.6.2 Daten lesen 471 11.6.3 Formulardaten verarbeiten (magic quotes) 473 11.7 Fehlerabsicherung 481 11.8 Bilder speichern und darstellen 483 11.8.1 Grundlagen und Programmiertechniken 484 11.8.2 Programmcode 488 12 PHP Bücherverwaltung 493 12.1 Einführung 494 12.2 Hilfsfunktionen (mylibraryconnect.inc.php) 494 12.3 Büchersuche (find.php) 496 12.3.1 Effizienzprobleme bei der Darstellung von Suchergebnissen 498 12.3.2 Codegerüst 499 12.3.3 Formular anzeigen 502 12.3.4 SQL-Kommando für Titel- oder Autorensuche bilden 502 12.3.5 Ergebnisse für Autorensuche anzeigen 507 12.3.6 Ergebnisse für Titelsuche anzeigen 508 12.3.7 Links zu den vorangegangenen Seiten und zur nächsten Seite 511 12.3.8 Erweiterungsmöglichkeiten 512 12.4 Einfache Eingabe neuer Bücher (simpleinput.php) 513 12.4.1 Programmstruktur, Codegerüst 514 12.4.2 Titel speichern 515 12.5 Komfortable Eingabe neuer Bücher (input.php) 517 12.5.1 Bedienung 517 12.5.2 Programmstruktur 519 12.5.3 Datenvalidierung, Wechsel zwischen Eingabephase 1 und 2 525 12.5.4 Formulare anzeigen 528 12.5.5 Hilfsfunktionen 530 12.5.6 Daten speichern 538 12.5.7 Erweiterungsmöglichkeiten 542 12.6 Verwaltung der Buchkategorien (categories.php) 543 12.6.1 Codegerüst 544 12.6.2 Main-Code 546 12.6.3 Funktion zum Speichern einer neuen Kategorie 550 12.6.4 Funktion zum Löschen einer vorhandenen Kategorie 553 12.7 Verbesserungsideen, Erweiterungsmöglichkeiten 554

14 Inhaltsverzeichnis 13 PHP Diskussionsforum 557 13.1 Bedienung 558 13.2 Überblick über den Programmcode 562 13.3 Anmeldung (forumlogin.php) 565 13.4 Neuen Benutzer anlegen (forumnewlogin.php) 567 13.5 Liste aller Diskussionsgruppen anzeigen (forumlist.php) 570 13.6 Nachrichtenliste einer Diskussionsgruppe (forumread.php) 571 13.6.1 Verschiedene Darstellungformen hierarchischer Listen 571 13.6.2 Programmstruktur 574 13.6.3 Ermittlung der Nachrichtentexte 575 13.6.4 Nachrichtenliste anzeigen 576 13.6.5 Verweise auf weitere Seiten 578 13.7 Nachrichtentext darstellen (forummessage.php) 579 13.8 Thread anzeigen (forumthread.php) 581 13.9 Diskussionsbeitrag verfassen (forumwrite.php) 582 13.9.1 Programmstruktur 582 13.9.2 Nachricht speichern (insert_new_message) 583 13.9.3 Formular anzeigen 585 13.10 Forum verlassen (forumlogout.php) 588 13.11 Erweiterungsmöglichkeiten 589 14 Perl 591 14.1 Programmiertechniken 592 14.1.1 Verbindung zur Datenbank herstellen 593 14.1.2 SQL-Kommandos ausführen 595 14.1.3 SELECT-Abfragen auswerten 597 14.1.4 Zeichenketten, BLOBs, DATEs, SETs, ENUMs und NULL 603 14.1.5 DBD::mysql-spezifische Methoden und Attribute 606 14.1.6 Fehlerabsicherung 608 14.2 Beispiel: Ungültige Datensätze löschen (mylibrary) 610 14.3 CGI-Beispiel: Bücherverwaltung (mylibrary) 613 14.3.1 Büchersuche (mylibrary-find.pl) 613 14.3.2 Einfache Eingabe neuer Bücher (mylibrary-simpleinput.pl) 617 15 Java, JSP, JDBC 621 15.1 Einführung 622 15.1.1 Java-Installation 622 15.1.2 Connector/J-Installation 623 15.2 Programmiertechniken 627 15.2.1 Verbindungsaufbau 629

Inhaltsverzeichnis 15 15.2.2 Probleme beim Verbindungsaufbau 632 15.2.3 SQL-Kommandos ausführen 633 15.2.4 SELECT-Abfragen auswerten 636 15.2.5 Prepared Statements 641 15.2.6 Unicode 642 15.2.7 Transaktionen 644 15.2.8 Batch-Kommandos 645 15.2.9 Umgang mit binären Daten (BLOBs) 646 15.3 Java Server Pages (JSP) 649 15.3.1 Tomcat-Installation 649 15.3.2 Programmiertechniken 653 16 C und C++ 657 16.1 C-API 658 16.1.1 Voraussetzungen 658 16.1.2 Hello World 658 16.1.3 C-Programme kompilieren und linken 660 16.1.4 Programmiertechniken 663 16.2 Connector/C++ (MySQL++) 671 16.2.1 Voraussetzungen 672 16.2.2 Hello World in C++ 673 16.2.3 Connector/C++-Programme kompilieren und linken 674 16.2.4 Programmiertechniken 675 17 Visual Basic, C#, ODBC 683 17.1 Grundlagen 684 17.1.1 Kleines Glossar der Microsoft-Datenbankwelt 685 17.1.2 DSN für eine MySQL-Datenbank einrichten 687 17.2 Access 691 17.2.1 Einführung 691 17.2.2 Tabellen importieren und exportieren 694 17.2.3 Konverter Access MySQL (exportsql.txt) 696 17.3 Datenanalyse mit Excel 698 17.4 ADO-Programmierung und Visual Basic/VBA 700 17.4.1 Einführung 700 17.4.2 Verbindungsaufbau 703 17.4.3 ADO-Programmiertechniken 708 17.4.4 Beispiel authors-spalte für die titles-tabelle 715 17.4.5 Beispiel Neuen Buchtitel einfügen 718 17.4.6 Beispiel Bilddatei in BLOB speichern und wieder lesen 721 17.5 MyVbQL (VB-Programmierung ohne ADO/ODBC) 724

16 Inhaltsverzeichnis 17.6 ADO.NET (Visual Basic.NET, C#) 727 17.6.1 Kommunikation zwischen ADO.NET und MySQL 728 17.6.2 Verbindungsaufbau mit dem ODBC-Data-Provider 730 17.6.3 Verbindungsaufbau mit dem ByteFX.Data-Provider 733 17.6.4 Verbindungsaufbau mit dem dbprovider (einfodesign) 734 17.6.5 Verbindungsaufbau mit MySQLDirect.NET (corelab) 735 17.6.6 Programmiertechniken 736 17.6.7 Beispiel Neue Titel in mylibraryodbc speichern 746 17.7 Konverter Microsoft-SQL-Server MySQL 750 IV REFERENZ 755 755 18 SQL-Referenz 757 18.1 Syntax 758 18.2 Operatoren 764 18.3 Variablen und Konstanten 768 18.4 MySQL-Datentypen 771 18.5 Kommandoübersicht (thematisch) 773 18.6 Kommandoreferenz (alphabetisch) 775 18.7 Funktionsreferenz 816 18.7.1 Arithmetische Funktionen 816 18.7.2 Vergleichsfunktionen, Abfragen, Verzweigungen 817 18.7.3 Typenkonvertierung (cast) 818 18.7.4 Bearbeitung von Zeichenketten 818 18.7.5 Datum und Uhrzeit 822 18.7.6 GROUP-BY-Funktionen (Aggregatsfunktionen) 825 18.7.7 Weitere Funktionen 826 19 MySQL-Tools 829 19.1 Überblick 830 19.2 Gemeinsame Optionen und Konfigurationsdateien 831 19.3 mysqld (Server) 837 19.4 mysqld_safe (Server-Start) 847 19.5 mysql_install_db (Neuinstallation der mysql-datenbank) 848 19.6 mysql_fix_privileges (Update der mysql-datenbank) 849 19.7 mysql_fix_extensions (Umbenennung der MyISAM-Dateien) 849 19.8 mysql (SQL-Kommandointerpreter) 850 19.9 mysqladmin (Administration) 853

Inhaltsverzeichnis 17 19.10 mysqldump (Backup/Export) 855 19.11 mysqlimport (Textimport, Bulkimport) 858 19.12 mysqlshow (Infoanzeige) 858 19.13 mysqlbug (Fehlerberichte versenden) 859 19.14 myisamchk (MyISAM-Dateien reparieren) 859 19.15 myisampack (MyISAM-Dateien komprimieren) 862 20 API-Referenz 863 20.1 PHP-API 864 20.2 Perl-DBI 869 20.3 JDBC (Connector/J) 876 20.4 C-API 883 ANHANG A Glossar 891 B MySQL 4.1 897 C Inhalt der CD-ROM 911 Quellenverzeichnis 915 Stichwortverzeichnis 917

Vorwort MySQL ist das am weitesten verbreitete Datenbanksystem im Open-Source-Sektor. Dafür gibt es viele Gründe: MySQL ist schnell. MySQL ist stabil. MySQL ist leicht zu erlernen. MySQL läuft auf den gängigen Betriebssystemen (Windows, Linux, Mac OS X, diverse Unix-Derivate). MySQL-Anwendungen können in allen erdenklichen Programmiersprachen erstellt werden (z.b. in C, C++, C#, Java, Perl, PHP, Python, VB und VB.NET). MySQL ist im Internet umfassend dokumentiert, außerdem gibt es zahlreiche Bücher dazu. MySQL ist für viele Anwendungen kostenlos verfügbar (Lizenz GPL). Da die Lizenzbestimmungen der GPL ein Hindernis für manche kommerzielle Anwendungen sind, gibt es kostengünstige kommerzielle Lizenzen und optionale Support-Verträge. MySQL schickt sich an, den Erfolg von Linux im Betriebssystemsektor auf dem Datenbankmarkt zu wiederholen. In Verbindung mit PHP, Perl oder Java stellt MySQL für immer mehr Websites die Datenbasis zur Verfügung. (Besonders beliebt ist die Kombination aus Linux + Apache + MySQL + Perl/PHP. Solche Systeme werden kurz LAMP genannt.) MySQL wird dabei keineswegs nur für kleine Websites eingesetzt, sondern kommt auch bei großen Firmen mit riesigen Datenmengen zur Anwendung etwa bei Yahoo!, Slashdot oder Google. Was bietet dieses Buch? Dieses Buch gibt eine vollständige, anwendungs- und beispielorientierte Einführung in das Datenbanksystem MySQL. Es wird keinerlei Vorwissen (z.b. über SQL oder Datenbankdesign im Allgemeinen) vorausgesetzt. Der Einführungsteil beginnt mit einer ausführlichen Installationsanleitung für Windows und Linux. Dabei wird auch die Installation von Komponenten berücksichtigt, die üblicherweise in Kombination mit MySQL eingesetzt werden (Apache, PHP, php- MyAdmin, Perl, Connector/ODBC). Darauf aufbauend zeigt ein erstes Beispiel den prinzipiellen Umgang mit MySQL und PHP.

20 Vorwort Der Grundlagenteil vermittelt eine Menge Hintergrundwissen zur Bedienung verschiedener Benutzeroberflächen, zur Datenbanksprache SQL, zum richtigen Design von Datenbanken, zur Verwendung von InnoDB-Tabellen, zum Zugriffssystem von MySQL und zu vielen anderen Administrationsthemen (z.b. Backups, Logging und Replikation). Der Programmierteil setzt den Schwerpunkt bei der Sprache PHP: Drei Kapitel vermitteln grundsätzliche Programmiertechniken und zeigen die Realisierung von zwei umfangreichen Beispielen (Buchverwaltung, Diskussionsforum). Die meisten PHP- Beispiele können Sie live auf meiner Website ausprobieren. Aber auch andere Programmiersprachen kommen nicht zu kurz: In eigenen Kapiteln werden Perl, Java, C/C++ sowie VB/VB.NET/C# behandelt. Das Buch wird durch eine Referenz abgeschlossen, die einen Überblick über die SQL- Kommandos von MySQL, über die Kommandos und Optionen der Administrationswerkzeuge und über die Funktionen wichtiger Programmierschnittstellen gibt (PHP, Perl, C, Java). In Kombination mit den auf der CD verfügbaren Beispieldatenbanken und -programmen vermittelt Ihnen dieses Buch ein gutes Fundament für die Entwicklung eigener Datenbankanwendungen. Dabei wünsche ich Ihnen viel Spaß und Erfolg! Michael Kofler, April 2003 http://www.kofler.cc

Konzeption des Buchs Neu in der zweiten Auflage Das Buch wurde im Vergleich zur ersten Auflage von der ersten bis zur letzten Seite vollständig überarbeitet. (Der Zeitaufwand für die Neuauflage war gleich groß wie der für die erste Auflage!) Die folgende Liste fasst die wichtigsten Änderungen zusammen: MySQL: Das Buch berücksichtigt nun MySQL 4.0 und teilweise auch schon My- SQL 4.1. Die Änderungen betreffen das ganze Buch, von der Installation bis zur Referenz. Benutzeroberflächen: Das Buch beschreibt die neue Benutzeroberfläche MySQL Control Center und die neueste Version von phpmyadmin. SQL-Rezepte: Zur SQL-Einführung ist ein weiteres SQL-Kapitel hinzugekommen, das zahlreiche Antworten auf häufig auftretende SQL-Fragen gibt: Wie können die n ersten/letzten Datensätze bearbeiten werden (Top-10-Liste)? Wie können Datensätze zufällig ausgewählt werden? Wie können Doppelgängern gefunden werden? Wie können Sub-SELECT-Kommandos in MySQL 4.0 und 4.1 gebildet werden? Wie wird die Volltextsuche effizient eingesetzt? InnoDB-Tabellen, Transaktionen, Integritätsregeln: Ein neues Kapitel widmet sich dem InnoDB-Tabellenformat. InnoDB-Tabellen ermöglichen die Durchführung von Transaktionen mit row level locking und die Sicherstellung der Integrität von Beziehungen zwischen Tabellen (foreign key constraints). Sicherheit, Zugriffsrechte: Kapitel 9 geht auf alle Neuerungen bei der Verwaltung der Zugriffsrechte (MySQL-Privilegien) ein. Ein neuer Abschnitt gibt praxisnahe Tipps, wie Probleme beim Verbindungsaufbau behoben werden können. Administration: Alle Administrationsthemen sind in einem einzigen, klar strukturierten Kapitel zusammengefasst. Neue Abschnitte behandeln die Administration von InnoDB-Tabellen und das Server-Tuning (inklusive Query Cache). PHP: Alle PHP-Beispiele wurden im Hinblick auf PHP 4.3 überarbeitet. Von den PHP-Beispielen erzeugter HTML-Code ist jetzt weitgehend XHMTL-kompatibel. Der PHP-Text wurde auf vier Kapitel verteilt und klarer strukturiert. In Kapitel 11 zu den PHP-Programmiertechniken wird nun auch das Speichern von Bildern behandelt (Datei-Upload/-Download). Java: Ein neues Kapitel beschreibt die Programmierung von Java- und JSP-Anwendungen auf der Basis von JDBC und Connector/JDBC. C/C++: Ein neues Kapitel zeigt die Entwicklung von C- und C++-Programmen.

22 Konzeption des Buchs VB6: Ein neues Beispielprogramm demonstriert den Umgang mit BLOBs. VB.NET, C#: Ein neuer Abschnitt in Kapitel 17 behandelt die Entwicklung von ADO.NET-Anwendungen mit den Programmiersprachen VB.NET und C#. Referenz: Die drei Referenzkapitel wurden vollständig aktualisiert und um neue Abschnitte erweitert (C-Funktionen, JDBC-Klassen). MySQL 4.1: Anhang B fasst alle bereits bekannten Neuerungen in MySQL 4.1 zusammen: die bessere Zeichensatzunterstützung (inklusive Unicode), die Verwendung von Sub-SELECTs, die Verwaltung geometrischer und geografischer Daten (GIS), die Verwendung von vorkompilierten Kommandos (prepared statements) etc. Was dieses Buch nicht bietet Einige Kapitel des Buchs behandeln die Programmierung von MySQL-Anwendungen in diversen Programmiersprachen, z.b. PHP, Perl, C, C++, Java, Visual Basic etc. Diese Kapitel setzen voraus, dass Sie mit der jeweiligen Programmiersprache bereits umgehen können. (Der Platz in diesem Buch reicht einfach nicht aus, um auch noch Einführungen in verschiedene Programmiersprachen zu geben.) Mit anderen Worten: Sie werden von den PHP-Kapiteln dieses Buchs nur profitieren, wenn Sie die Programmiersprache PHP bereits beherrschen. Beispielprogramme, Quellcode Soweit es sich um Webanwendungen handelt, können Sie fast alle Beispiele des Buchs direkt auf meiner Website (http://www.kofler.cc) ausprobieren. Der Quellcode aller Beispiele sowie die Beispieldatenbanken befinden sich auf der CD zum Buch. Beim Abdruck von längeren Programmlistings in diesem Buch finden Sie jeweils am Beginn des Beispiels eine Kommentarzeile, die den Dateinamen innerhalb der Beispieldateien angibt, beispielsweise in dieser Form: <!-- php/mylibrary/simpleinput.php --> Aus Platzgründen wurden zum Teil nur die interessantesten Passagen des Programmcodes abgedruckt. Versionen Die Funktionen von MySQL und die der im Umfeld eingesetzten Programmen, Programmiersprachen und Bibliotheken ändern sich bisweilen mit jeder neuen Version und die gibt es zum Teil wöchentlich. Die folgende Übersicht gibt an, mit welchen Versionen ich gearbeitet habe. (Erklärungen, wofür die Namen stehen, folgen an den entsprechenden Stellen im Buch.)

Konzeption des Buchs 23 Apache: Version 1.3.n und 2.0.n Connector/J: Version 3.0.6 Connector/ODBC (ehemals MyODBC): Version 3.51.06 gcc: Version 3.2 Java: Version 1.4.1 (Windows) bzw. 1.3.1 (Linux) JSP: siehe Tomcat Linux: MySQL und die anderen Programme wurden für dieses Buch sowohl unter Linux als auch unter Windows getestet. Unter Linux kamen die Distributionen Red Hat 8.0 und 9.0 sowie SuSE 8.1 und 8.2 zum Einsatz. MySQL: Version 4.0.12. Bei den meisten Beispielprogrammen wurde allerdings auf die Kompatibilität zu MySQL 3.23.n geachtet, da diese Version bei vielen Internet Service Provider noch immer im Einsatz ist. Andererseits wurden aber auch schon die Neuerungen von MySQL 4.1 mit einer Entwicklerversion getestet (Pre-Alpha von Ende März 2003) und in Anhang B beschrieben. Connector/C++: Version 1.7.9 Perl: Version 5.6 und 5.8 PHP: Versionen 4.2 und 4.3. Als Dateikennung wurde generell *.php verwendet. phpmyadmin: Version 2.4. Tomcat: Version 4.0.4 (Java Servlet 2.2, Java Server 1.1) Visual Basic, VBA, ADO: Visual-Basic-Programme wurden mit VB6 bzw. VBA6 und den ADO-Versionen 2.1 und 2.7 entwickelt bzw. getestet. Visual Basic.NET, C#, ADO.NET, ASP.NET: Die Informationen beruhen auf Visual Studio.NET 2002 (.NET-Framework 1.0). Windows: Alle Tests unter Windows habe ich mit Windows 2000 durchgeführt. Prinzipiell sollten die Informationen auch für Windows NT 4, Windows XP und zukünftige Windows-Versionen gelten. Schreibweisen SQL-Kommandos und -Funktionen sowie Methoden, Klassen, Schlüsselwörter in SQL, C, Java, PHP, Perl, VB etc. (z.b. SELECT oder mysql_query) Unix/Linux-Benutzer (z.b. root oder mysql) MENÜKOMMANDOS (z.b. DATEI ÖFFNEN)

24 Konzeption des Buchs Tastenkürzel (z.b. Shift+Entf) Datei- und Verzeichnisnamen (z.b. /usr/local oder C:\Windows) Programme und Kommandos (z.b. mysql oder cmd.exe) MySQL-Optionen bzw. Konfigurationsparameter (z.b. default-charset) Programmlistings und ganzzeilige Kommandoeingaben Deutsche Sonderzeichen im HTML-Code (also äöüß) werden im Klartext abgedruckt, nicht in der Form ä, ö Damit derartiger HTML-Code korrekt angezeigt wird, muss im HTML-Code auch der gewünschte Zeichensatz iso-8859-1 (Latin-1) angegeben werden. SQL-Kommandos und Funktionen werden generell in Großbuchstaben angegeben. Das ist aber keine syntaktische Notwendigkeit, sondern lediglich eine Konvention. MySQL differenziert bei SQL-Kommandos aber nicht zwischen Groß- und Kleinschreibung. Bei Windows-Verzeichnisangaben wird oft auf absolute Pfade verzichtet, da diese von der jeweiligen Installation abhängen: Windows\ Programme\ Mysql\ meint das Windows-Verzeichnis (beispielsweise C:\Windows). meint das von Windows vorgesehene Verzeichnis für Programminstallationen (beispielsweise C:\Programme oder D:\Program Files). meint das MySQL-Installationsverzeichnis (beispielsweise C:\Mysql oder D:\Program Files\Mysql). Kommandos In diesem Buch werden häufig Kommandos angegeben. Dabei wird zwischen der Unix/Linux- und der Windows-Schreibweise gewechselt. Die beiden folgenden Kommandos sind äquivalent: root# mysqladmin -u root -h localhost password xxx > mysqladmin -u root -h localhost password xxx In beiden Fällen geben Sie nur den fett hervorgehobenen Teil des Kommandos ein. root# ist der unter Unix/Linux übliche Eingabeprompt, wenn Sie dort als root (Administrator) arbeiten. Unter Windows hat das Zeichen > im Kommandofenster (Eingabeaufforderung) dieselbe Bedeutung. Unter Unix/Linux ist es möglich, sehr lange Eingaben über mehrere Zeilen zu verteilen. Die Zeilen werden dabei durch das Zeichen \ getrennt. Auch diese Schreibweise wird im Buch manchmal angewandt. Das folgende Kommando entspricht daher den beiden obigen.

Konzeption des Buchs 25 root# mysqladmin -u root -h localhost \ password xxx In allen drei Fällen müssen Sie kursiv hervorgehobene Teile durch eigenen Text ersetzen (hier also xxx durch Ihr eigenes Passwort). Abkürzungen Ich versuche in diesem Buch sparsam mit Abkürzungen umzugehen. Es gibt allerdings einige wenige Abkürzungen, die ich im ganzen Buch pausenlos verwende, ohne sie in jedem Kapitel neu zu erläutern: ADO Active Data Objects (Microsoft-Datenbankbibliothek) ADO.NET ADO für.net (inkompatibel zu ADO!) BLOB Binary Large Object (binärer Datenblock) GPL GNU Public License (wichtige Lizenz für Open-Source-Software) ISP Internet Service Provider JSP Java Server Pages HTML Hyper Text Markup Language (Format zur Beschreibung von Webdokumenten) InnoDB ist keine Abkürzung, sondern der Name einer Firma, die ein spezielles Tabellenformat für MySQL entwickelt hat (InnoDB-Tabellen). MySQL ist der Name der Firma, die das Datenbanksystem MySQL entwickelt hat. ODBC Open Database Connectivity (Schnittstelle für den Datenbankzugriff, vor allem unter Windows populär) PHP PHP Hypertext Preprocessor (eine Script-Programmiersprache für HTML-Seiten) RPM Red Hat Packet Manager (ein Format für Linux-Software-Pakete) SQL Structured Query Language (Datenbankprogrammiersprache) URL Uniform Resource Locator (Internet-Adresse der Form http://www.firma.com/seite.html) VB Visual Basic (Programmiersprache) VB.NET VBA Visual Basic.NET (Programmiersprache) Visual Basic für Applikationen (Programmiersprache innerhalb des Microsoft-Office-Pakets)