Referat Web-Engineering 06.12.2006 Copyright © 2006 by Manuel Hegemann Inhaltverzeichnis I 1. Was ist MySQL? 1. 2. 3. 2. Geschichte Wichtige Features Maximale Größe von MySQL-Tabellen Installation / Konfiguration 1. 2. 3. 4. Unterstützte Betriebssystem Installation unter Windows Installation unter Linux Einstellungen und Tests nach der Installation 1. Unter Windows 2. Unter Linux Inhaltsverzeichnis II 3. Adminwerkzeuge und Benutzeroberflächen 1. 2. 4. Datenbankdesign 3. 4. 5. 6. PHPMyAdmin MySQL-Administrator Tabellentypen Feldtypen SQL-Einführung Zugriff auf MySQL 1. 2. Zugriff per Perl Zugriff per PHP Was ist MySQL? Geschichte Ursprüngliche Absicht war Benutzung des SQL-Codes um eigene Low-Level-Routinen (ISAM) zu benutzen SQL jedoch weder schnell und flexibel genug um Anforderungen abzudecken Resultat war neue Datenbank, die allerdings fast gleiche API wie SQL benutzt Namensherkunft nicht endgültig geklärt Entweder weil große Anzahl an Bibliotheken und Werkzeugen das Präfix „my“ tragen Oder vom Namen der Tochter des MySQLMitbegründers Monty Widenius, die „My“ hieß Name des MySQL-Delphins ist „Sakila“ Vorschlag wurde im Rahmen des Wettbewerbs „Name the Dolphin“ ausgewählt Was ist MySQL? Wichtige Features Geschrieben in C und C++ Läuft auf vielen Plattformen Multithread fähig Schnelle „Joins“ Keine Speicherlecks (memory leaks) Sehr viele Datentypen Volle Standard-SQL-Unterstützung + teilweise ODBCSyntax-Unterstützung Flexibles und Sicheres Berechtigungssystem Fehlermeldung und –lokalisierung in vielen Sprachen möglich Eingebaute SQL-Anweisungen zum Prüfen, Optimieren und Reparieren von Tabellen u.v.m. Was ist MySQL? Maximale Größe von MySQL-Tabellen Betriebssystem Maximale Dateigröße Linux 2.2 – Intel 32 Bit 2 GByte Linux 2.4+ 4 TByte Solaris 9/10 16 TByte NetWare 8 TByte Win 32 FAT / FAT 32 2 GByte / 4 GByte Win 32 NTFS 2 TByte Mac OS 2 TByte Installation / Konfiguration Unterstützte Betriebssysteme AIX Amiga BSDI Digital Unix FreeBSD HP-UX Linux Mac OS NetBSD OpenBSD OS/2 Solaris SunOS Tru64 Unix Windows Installation / Konfiguration Installation unter Windows I Paketauswahl treffen Essentials-Paket enthält die mindestens erforderlichen Dateien für eine Windowsinstallation inkl. Konfigurationsassistent Complete-Paket enthält alle Dateien, inkl. optionale Komponenten und Konfigurationsassistent Noinstall-Paket enthält alle Dateien des CompletePakets mit Ausnahme des Konfigurationsassistenten Für die meisten Anwender wird das EssentialsPaket empfohlen Installation / Konfiguration Installation unter Windows II Installation durch Konfigurationsassistenten Hinweisen des Assistenten folgen und erforderliche Eingaben tätigen Sofortiger Einsatz von MySQL möglich Nicht empfehlenswert für fortgeschrittene Benutzer, die volle Kontrolle über Serverkonfiguration wünschen und jene, die mehrere MySQL-Instanzen auf gleichem Host installieren wollen Installation / Konfiguration Installation unter Linux Was zunächst benötigt wird make C/C++ Compiler tar cat Perl5-Library MySQL Source-Codes herunterladen Dateien entpacken Konfigurationsscript ausführen Anschließend Script kompilieren Kompiliertes Script installieren Datenbanken installieren MySQL mitteilen, wer Daemon ausführt my.cnf anpassen Installation / Konfiguration my.cnf [mysqld] basedir=INSTALLATIONSVERZEICHNIS datadir=DATENVERZEICHNIS language=SPRACHVERZEICHNIS port=PORT Server=SERVERVERZEICHNIS user=BENUTZERNAME password=DEIN PASSWORT Adminwerkzeuge/Benutzeroberflächen PHPMyAdmin Vorführung von PHPMyAdmin im Einsatz Adminwerkzeuge/Benutzeroberflächen MySQL-Administrator Leistungsfähe, graphische Verwaltungskonsole Integration von Wartung und Administration einer Datenbank Ermöglicht die Benutzerverwaltung und die Steuerung von Zugriffsrechten innerhalb weniger Minuten Dynamische Zustandsüberwachung aller wesentlichen Zustandsindikatoren der MySQL-Umgebung Schnellere Optimierung durch einfache Einsicht verschiedenster Parameter möglich Schnelle Erstellung von konsistenten Datensicherungen Übersicht über Protokoll-Dateien Vollständige Kontrolle über Systemdienste MySQL Server kann gestartet und angehalten werden Plattformübergreifend, verfügbar für Windows und Linux für MySQL 4.x Testvideo unter http://www.mysql.de/products/tools/administrator/tutorials/customgraphs.html Datenbankdesign Tabellentypen MyISAM: Standard-Speicher-Engine – Baut auf älterem ISAM-Code auf und enthält viele praktische Erweiterungen InnoDB: Transaktionssichere Speicher-Engine mit Commit-, Rollbackund Backupfähigkeit MERGE: Sammlung identischer MyISAM-Tabellen – Identisch = gleiche Spalten- und Indexdaten MEMORY: Legt Tabellen an, die im RAM gespeichert werden, auch als HEAP bezeichnet BDB: bessere Chancen Absturz zu überstehen, außerdem Commitund Rollbackfunktion EXAMPLE: Beispiel für Entwickler wie man Speicher-Engines erstellt FEDERATED: greift auf Daten in „entfernten“ Datenbanktabellen zu ARCHIVE: Speicherung großer Datenmengen ohne Indizes mit kleinem Speicherbedarf CSV: Speicherung in Textdateien im Format von kommatagetrennten Werten BLACKHOLE: Daten werden zwar entgegen genommen, aber nicht gespeichert Datenbankdesign Numerische Feldtypen BIT: Anzahl von Bits pro Wert zwischen 1 und 64 TINYINT: -128 bis 127 BOOLEAN: TRUE oder FALSE SMALLINT: -32768 bis 32767 MEDIUMINT: -8388608 bis 8388607 INT: -2147483648 bis 2147483647 BIGINT: -9223372036854775808 bis 9223372036854775807 FLOAT: -3.402823466E+38 bis 3.402823466E+38 DOUBLE: -2.2250738585072014E-308 bis 1.7976931348623157E+308 DECIMAL: gepackte „extakte“ Festkommazahl Datenbankdesign Datums- und Zeittypen DATE: 1000-01-01 bis 9999-12-31, Format immer YYYY-MM-DD DATETIME: 1000-01-01 00:00:00 bis 9999-12-31 23:59:59, Format immer YYYY-MM-DD HH:MM:SS TIMESTAMP: 1970-01-01 00:00:00 und einem Zeitpunkt irgendwann im Jahr 2037 TIME: -838:59:59 und 838:59:59, Format immer HH:MM:SS YEAR (2|4): 1901 bis 2155, sowie 0000 – im zweistelligen Bereich von 70 bis 69 (1970 bis 2069) Datenbankdesign String-Typen CHAR: von 0 bis 255 Zeichen VARCHAR: von 0 bis 65535 Zeichen TINYBLOB: 255 (2^8 – 1) Byte BLOB: 65.535 (2^16 – 1) Byte TINYTEXT: 255 (2^8 – 1) Zeichen TEXT: 65.535 (2^16 – 1) Zeichen ENUM: Liste von Werten durch Komma getrennt, maximal 65.535 Werte SQL-Einführung I SQL: Server Query Language Durch SQL-Statements können Daten von der Datenbank abgefragt, hinzugefügt, geändert und gelöscht werden SQL-Statements werden meist in Applikationen eingebunden, können aber auch in Adminwerkzeugen ausgeführt werden SQL-Einführung II SELECT Syntax: SELECT attribute FROM tabelle WHERE bedingung [ORDER BY | GROUP BY | etc.] SQL-Einführung III INSERT Syntax: INSERT INTO tabelle (attrib1, attrib2, attrib3) VALUES (´wert1´, ´wert2´, ´wert3´) SQL-Einführung IV UPDATE Syntax: UPDATE tabelle SET attrib1=´wert1a´, attrib2=´wert2a´ WHERE bedingung SQL-Einführung V DELETE Syntax: DELETE FROM tabelle WHERE bedingung SQL-Einführung VI JOIN, am Beispiel INNER JOIN Syntax: SELECT tab1.attribute, tab2.attribute FROM tabelle1 tab1 INNER JOIN tabelle 2 tab2 ON tab1.pk = tab2.fk [WHERE bedingung] [ORDER BY | GROUP BY | etc.] Zugriff auf MySQL Zugriff per Perl DBI ermöglicht Zugriff auf SQL-Datenbanken Beispiel: //Benutze DBI use DBI; //Quellen beziehen (Treiber, Host, etc.) @data_sources = DBI->data_sources($driver_name); //Datenbankverbindung herstellen $dbh = DBI->connect($data_source, $username, $auth); //Statement ausführen $rv = $dbh->do($statement); //Datenbankverbindung schließen $rc = $dbh->disconnect; Zugriff auf MySQL Zugriff per PHP PHP besitzt eigene Befehle um auf eine MySQL-Datenbank zuzugreifen Beispiel: //Datenbankverbindung herstellen $con = mysql_connect($host, $user, $pwd) or die(´Fehler´); //Datenbank auswählen mysql_select_db($database, $con) or die(´Fehler´); //Statement ausführen $query = mysql_query($statement); //Anzahl betroffene Zeilen abfragen $num = mysql_num_rows($query); //Bei Abfrage Datenarray auslesen $array = mysql_fetch_array($query); //Datenbankverbindung schließen; mysql_close($con); ENDE Vielen Dank für Eure Aufmerksamkeit!