Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Das Datenbankmanagementsystem MySQL ist aus vielen Gründen beliebt. Es ist schnell und lässt sich einfach einrichten, verwenden und verwalten. Es läuft unter vielen Unix- und Windows-Versionen, und MySQL-basierte Programme können in vielen Sprachen geschrieben werden.

Die Beliebtheit von MySQL macht es notwendig, auf die Fragen seiner Benutzer einzugehen, wie sie bestimmte Probleme lösen können. Das ist der Zweck des MySQL-Kochbuchs: Es soll als praktische Ressource dienen, in der du schnelle Lösungen oder Techniken für bestimmte Arten von Fragen finden kannst, die bei der Verwendung von MySQL auftauchen. Da es sich um ein Kochbuch handelt, enthält es natürlich auch Rezepte: einfache Anleitungen, die du befolgen kannst, und nicht, wie du deinen eigenen Code von Grund auf entwickelst. Es ist in einem Problem- und Lösungsformat geschrieben, das extrem praktisch ist und den Inhalt leicht lesbar und verständlich macht. Es enthält viele kurze Abschnitte, die jeweils beschreiben, wie man eine Abfrage schreibt, eine Technik anwendet oder ein Skript entwickelt, um ein begrenztes und spezifisches Problem zu lösen. In diesem Buch geht es nicht um die Entwicklung vollwertiger, komplexer Anwendungen. Stattdessen unterstützt es dich dabei, solche Anwendungen selbst zu entwickeln, indem es dir hilft, Probleme zu lösen, bei denen du nicht weiterkommst.

Eine häufige Frage ist zum Beispiel: Wie kann ich mit Anführungszeichen und Sonderzeichen in Datenwerten umgehen, wenn ich Abfragen schreibe?Das ist nicht schwer, aber herauszufinden, wie man es macht, ist frustrierend, wenn man nicht weiß, wo man anfangen soll. Dieses Buch zeigt dir, was zu tun ist; es zeigt dir, wo du anfangen kannst und wie du von dort aus weitermachst. Dieses Wissen wird dir immer wieder von Nutzen sein, denn nachdem du gesehen hast, worum es geht, kannst du die Technik auf jede Art von Daten anwenden, z. B. Texte, Bilder, Ton- oder Videoclips, Nachrichtenartikel, komprimierte Dateien oder PDF-Dokumente. Eine weitere häufige Frage ist: Kann ich auf Daten aus mehreren Tabellen gleichzeitig zugreifen? Die Antwort lautet Ja, und es ist ganz einfach, denn man muss nur die richtige SQL-Syntax kennen. Aber es ist nicht immer klar, wie das geht, bis du Beispiele siehst, die du in diesem Buch findest. Andere Techniken, die du in diesem Buch lernst, sind unter anderem folgende:

  • SQL verwenden, um Zeilen auszuwählen, zu sortieren und zusammenzufassen

  • Übereinstimmungen oder Unstimmigkeiten zwischen Tabellen finden

  • Transaktionen durchführen

  • Intervalle zwischen Daten oder Zeiten bestimmen, einschließlich Altersberechnungen

  • Identifiziere oder entferne doppelte Zeilen

  • Benutze LOAD DATA um deine Datendateien richtig zu lesen oder herauszufinden, welche Werte in der Datei ungültig sind

  • Verwende CHECK Einschränkungen, um die Eingabe falscher Daten in deine Datenbank zu verhindern.

  • Erstelle fortlaufende Nummern, die als eindeutige Zeilenbezeichner verwendet werden

  • Eine Ansicht als virtuelle Tabelle verwenden

  • Schreibe gespeicherte Prozeduren und Funktionen, richte Trigger ein, die aktiviert werden, wenn du Tabellenzeilen einfügst oder aktualisierst, und verwende das Zeitplanungsprogramm, um Abfragen nach einem Zeitplan auszuführen.

  • Replikation einrichten

  • Benutzerkonten verwalten

  • Serverprotokollierung kontrollieren

Ein Teil der Arbeit mit MySQL besteht darin, zu verstehen, wie man mit dem Server kommuniziert, d.h. wie man die Structured Query Language (SQL; ausgesprochen "Sequel"), die Sprache, in der Abfragen formuliert werden, verwendet. Daher liegt ein Schwerpunkt dieses Buches auf der Verwendung von SQL, um Abfragen zu formulieren, die bestimmte Arten von Fragen beantworten. Ein hilfreiches Werkzeug zum Erlernen und Verwenden von SQL ist das Programm mysql client, das in den MySQL-Distributionen enthalten ist. Du kannst den Client interaktiv verwenden, um SQL-Anweisungen an den Server zu senden und die Ergebnisse zu sehen. Dies ist äußerst nützlich, da es eine direkte Schnittstelle zu SQL bietet - so nützlich, dass das erste Kapitel mysql gewidmet ist.

Aber die Fähigkeit, SQL-Abfragen zu stellen, reicht allein nicht aus. Informationen aus einer Datenbank müssen oft weiterverarbeitet oder auf eine bestimmte Weise präsentiert werden. Was ist, wenn du Abfragen mit komplexen Zusammenhängen hast, z. B. wenn du die Ergebnisse einer Abfrage als Grundlage für andere verwenden musst? Was ist, wenn du einen speziellen Bericht mit sehr spezifischen Formatierungsanforderungen erstellen musst? Diese Probleme bringen uns zum anderen Schwerpunkt des Buches: Wie schreibe ich Programme, die mit dem MySQL-Server über eine Anwendungsprogrammierschnittstelle (API) interagieren? Wenn du weißt, wie du MySQL im Kontext einer Programmiersprache verwenden kannst, hast du weitere Möglichkeiten, die Fähigkeiten von MySQL zu nutzen:

  • Du kannst Abfrageergebnisse speichern und später wiederverwenden.

  • Du hast vollen Zugriff auf die Ausdruckskraft einer Allzweckprogrammiersprache. So kannst du Entscheidungen treffen, die auf dem Erfolg oder Misserfolg einer Abfrage oder auf dem Inhalt der zurückgegebenen Zeilen basieren, und dann die Aktionen entsprechend anpassen.

  • Du kannst die Abfrageergebnisse formatieren und anzeigen, wie du willst. Wenn du ein Kommandozeilenskript schreibst, kannst du einfachen Text erzeugen. Wenn es sich um ein webbasiertes Skript handelt, kannst du eine HTML-Tabelle erstellen. Wenn es sich um eine Anwendung handelt, die Informationen zur Übertragung an ein anderes System extrahiert, kannst du eine Datendatei in XML oder JSON erstellen.

Durch die Kombination von SQL mit einer allgemeinen Programmiersprache erhältst du einen äußerst flexiblen Rahmen für die Erstellung von Abfragen und die Verarbeitung ihrer Ergebnisse. Programmiersprachen erhöhen deine Fähigkeit, komplexe Datenbankoperationen durchzuführen. Das bedeutet aber nicht, dass dieses Buch komplex ist. Es hält die Dinge einfach und zeigt dir, wie du kleine Bausteine mit leicht verständlichen und einfach zu beherrschenden Techniken konstruierst.

Wir überlassen es dir, diese Techniken in deinen eigenen Programmen zu kombinieren, was du tun kannst, um beliebig komplexe Anwendungen zu erstellen. Schließlich basiert der genetische Code auf nur vier Nukleinsäuren, aber diese Grundelemente wurden kombiniert, um die erstaunliche Vielfalt an biologischem Leben zu erzeugen, die wir überall um uns herum sehen. Auch die Tonleiter besteht nur aus 12 Noten, aber in den Händen geschickter Komponisten werden sie so miteinander verwoben, dass eine reiche und endlose Vielfalt an Musik entsteht. Genauso kannst du, wenn du ein paar einfache Rezepte nimmst, deine Fantasie einbringst und sie auf die Probleme der Datenbankprogrammierung anwendest, die du lösen willst, Anwendungen erstellen, die vielleicht keine Kunstwerke sind, aber sicherlich nützlich und dir und anderen helfen, produktiver zu sein.

Für wen dieses Buch ist

Dieses Buch ist für jeden nützlich, der MySQL verwendet. Das reicht von Einzelpersonen, die eine Datenbank für persönliche Projekte wie einen Blog oder ein Wiki nutzen wollen, bis hin zu professionellen Datenbank- und Webentwicklern. Das Buch richtet sich auch an Menschen, die nicht wissen, wie man MySQL benutzt, es aber gerne lernen würden.

Wenn du neu in MySQL bist, wirst du hier viele Möglichkeiten finden, es zu nutzen. Wenn du schon etwas erfahrener bist, kennst du viele der hier behandelten Probleme wahrscheinlich schon, musstest sie aber vielleicht noch nie lösen und kannst mit diesem Buch viel Zeit sparen. Nutze die Rezepte aus dem Buch und verwende sie in deinen eigenen Programmen, anstatt den Code von Grund auf neu zu schreiben.

Das Material reicht von einführend bis fortgeschritten, wenn also ein Rezept Techniken beschreibt, die dir offensichtlich erscheinen, kannst du es überspringen. Wenn du ein Rezept nicht verstehst, legst du es beiseite und kommst später darauf zurück, vielleicht nachdem du einige der anderen Rezepte gelesen hast.

Was in diesem Buch steht

Wenn du dieses Buch benutzt, ist es sehr wahrscheinlich, dass du versuchst, eine Anwendung zu entwickeln, dir aber nicht sicher bist, wie du bestimmte Teile davon implementieren sollst. In diesem Fall weißt du bereits, welche Art von Problem du lösen willst; sieh im Inhaltsverzeichnis oder im Index nach einem Rezept, das zeigt, wie du das machen kannst, was du willst. Im Idealfall ist das Rezept genau so, wie du es dir vorgestellt hast, oder du kannst ein Rezept für ein ähnliches Problem an die vorliegende Aufgabe anpassen. Wir erklären die Prinzipien, die bei der Entwicklung jeder Technik eine Rolle spielen, damit du sie an die besonderen Anforderungen deiner eigenen Anwendungen anpassen kannst.

Eine andere Möglichkeit, an dieses Buch heranzugehen, ist, es einfach durchzulesen, ohne ein bestimmtes Problem vor Augen zu haben. Das kann dir ein breiteres Verständnis für die Möglichkeiten von MySQL vermitteln, deshalb empfehlen wir dir, das Buch gelegentlich durchzublättern. Es ist ein effektiveres Hilfsmittel, wenn du weißt, welche Arten von Problemen es behandelt.

In den späteren Kapiteln wirst du Rezepte finden, die das Wissen über die in den früheren Kapiteln behandelten Themen voraussetzen. Das gilt auch innerhalb eines Kapitels, denn in späteren Abschnitten werden oft Techniken verwendet, die in früheren Kapiteln behandelt wurden. Wenn du in einem Kapitel auf ein Rezept stößt, in dem eine Technik verwendet wird, mit der du nicht vertraut bist, sieh im Inhaltsverzeichnis oder im Index nach, wo die Technik zuvor erklärt wurde. Wenn du zum Beispiel in einem Rezept ein Abfrageergebnis mit einer ORDER BY Klausel sortierst, die du nicht verstehst, lies Kapitel 9, in dem verschiedene Sortiermethoden besprochen und ihre Funktionsweise erklärt wird.

Hier ist eine Zusammenfassung der einzelnen Kapitel, um dir einen Überblick über den Inhalt des Buches zu geben.

In Kapitel 1, "Das mysql-Client-Programm verwenden", wird beschrieben, wie du den Standard-MySQL-Kommandozeilen-Client verwendest. mysql ist oft die erste oder wichtigste Schnittstelle zu MySQL, die von den Benutzern verwendet wird, und es ist wichtig zu wissen, wie man seine Möglichkeiten nutzt. Mit diesem Programm kannst du interaktiv Abfragen stellen und die Ergebnisse sehen, sodass es sich gut für schnelle Experimente eignet. Du kannst es auch im Stapelverarbeitungsmodus verwenden, um vorgefertigte SQL-Skripte auszuführen oder seine Ausgaben an andere Programme zu senden. Außerdem werden in diesem Kapitel weitere Einsatzmöglichkeiten von mysql besprochen, z. B. wie du lange Zeilen besser lesbar machen oder Ausgaben in verschiedenen Formaten erzeugen kannst.

In Kapitel 2, "MySQL Shell verwenden", wird der neue MySQL-Kommandozeilen-Client vorgestellt, der vom MySQL-Team für die Versionen 5.7 und neuer entwickelt wurde. mysqlsh ist mit mysql kompatibel, wenn es im SQL-Modus läuft, unterstützt aber auch NoSQL in den Programmierschnittstellen JavaScript und Python. Mit MySQL Shell kannst du SQL- und NoSQL-Abfragen ausführen und viele Verwaltungsaufgaben einfach automatisieren.

Kapitel 3, "MySQL-Replikation", beschreibt, wie du die Replikation einrichtest und nutzt. Einige der Inhalte in diesem Kapitel sind fortgeschritten. Wir haben uns jedoch entschieden, es an den Anfang des Buches zu stellen, weil die Replikation für stabile MySQL-Installationen notwendig ist, die Katastrophen wie Beschädigungen oder Hardwareausfälle überstehen können. In der Praxis sollte jede produktive MySQL-Installation eines der Replikations-Setups verwenden. Das Einrichten einer Replikation ist zwar eine administrative Aufgabe, aber wir sind der Meinung, dass alle MySQL-Benutzer wissen müssen, wie die Replikation funktioniert, damit sie effektive Abfragen schreiben können, die sowohl auf dem Quell- als auch auf dem Replikat-Server performant sind.

Kapitel 4, "Schreiben von MySQL-basierten Programmen", zeigt die wesentlichen Elemente der MySQL-Programmierung: wie man sich mit dem Server verbindet, Abfragen stellt, die Ergebnisse abruft und Fehler behandelt. Außerdem wird erläutert, wie man mit Sonderzeichen und NULL Werten in Abfragen umgeht, wie man Bibliotheksdateien schreibt, um Code für häufig verwendete Operationen zu kapseln, und welche Möglichkeiten es gibt, die für die Verbindung mit dem Server benötigten Parameter zu sammeln.

Kapitel 5, "Auswählen von Daten aus Tabellen", behandelt verschiedene Aspekte der Anweisung SELECT, die das Hauptinstrument zum Abrufen von Daten vom MySQL-Server ist: die Angabe der abzurufenden Spalten und Zeilen, den Umgang mit NULL Werten und die Auswahl eines Abschnitts eines Abfrageergebnisses. In späteren Kapiteln werden einige dieser Themen ausführlicher behandelt, aber dieses Kapitel bietet einen Überblick über die Konzepte, von denen sie abhängen, wenn du einen einführenden Hintergrund zur Zeilenauswahl brauchst oder noch nicht viel über SQL weißt.

Kapitel 6, "Tabellenverwaltung", behandelt das Klonen von Tabellen, das Kopieren von Ergebnissen in andere Tabellen, die Verwendung von temporären Tabellen und das Überprüfen oder Ändern der Speicher-Engine einer Tabelle.

Kapitel 7, "Arbeiten mit Strings", beschreibt, wie man mit String-Daten umgeht. Es behandelt Zeichensätze und Sortierungen, String-Vergleiche, den Umgang mit Problemen der Groß- und Kleinschreibung, Mustervergleiche, das Auseinandernehmen und Kombinieren von Strings und die Durchführung von FULLTEXT Suchen.

Kapitel 8, "Arbeiten mit Daten und Zeiten", zeigt, wie du mit zeitlichen Daten arbeitest. Es beschreibt das Datumsformat von MySQL und wie man Datumswerte in anderen Formaten anzeigt. Außerdem wird erklärt, wie man den speziellen MySQL-Datentyp TIMESTAMP verwendet, wie man die Zeitzone einstellt, wie man zwischen verschiedenen Zeiteinheiten konvertiert, wie man Datumsarithmetik durchführt, um Intervalle zu berechnen oder ein Datum aus einem anderen zu generieren, und wie man Schaltjahre berechnet.

Kapitel 9, "Abfrageergebnisse sortieren", beschreibt, wie du die Zeilen eines Abfrageergebnisses in die gewünschte Reihenfolge bringst. Dazu gehört das Festlegen der Sortierrichtung, der Umgang mit NULL Werten, die Berücksichtigung der Groß- und Kleinschreibung von Zeichenfolgen und das Sortieren nach Datum oder Teilwerten von Spalten. Außerdem wird anhand von Beispielen gezeigt, wie spezielle Werte wie Domainnamen, IP-Nummern und ENUMsortiert werden können.

In Kapitel 10, "Zusammenfassungen erstellen", werden Techniken vorgestellt, mit denen du die allgemeinen Merkmale eines Datensatzes beurteilen kannst, z. B. wie viele Werte er enthält oder wie hoch sein Minimum, Maximum und Durchschnitt sind.

In Kapitel 11, "Gespeicherte Routinen, Trigger und geplante Ereignisse verwenden", wird beschrieben, wie du Funktionen und Prozeduren schreibst, die auf der Serverseite gespeichert werden, Trigger, die aktiviert werden, wenn Tabellen geändert werden, und Ereignisse, die nach einem bestimmten Zeitplan ausgeführt werden.

In Kapitel 12, "Arbeiten mit Metadaten", wird besprochen, wie man Informationen über die Daten erhält, die eine Abfrage zurückgibt, z. B. die Anzahl der Zeilen oder Spalten im Ergebnis oder den Namen und Datentyp jeder Spalte. Außerdem wird gezeigt, wie du MySQL fragen kannst, welche Datenbanken und Tabellen verfügbar sind oder wie du die Struktur einer Tabelle bestimmen kannst.

Kapitel 13, "Importieren und Exportieren von Daten", beschreibt, wie du Informationen zwischen MySQL und anderen Programmen übertragen kannst. Dazu gehört die Verwendung von LOAD DATA , die Konvertierung von Dateien von einem Format in ein anderes und die Bestimmung der für einen Datensatz geeigneten Tabellenstruktur.

In Kapitel 14, "Validierung und Neuformatierung von Daten", wird beschrieben, wie du Spalten in Datendateien extrahierst oder neu anordnest, Daten überprüfst und validierst und Werte wie z. B. Datumsangaben umschreibst, die oft in verschiedenen Formaten vorliegen.

Kapitel 15, "Erzeugen und Verwenden von Sequenzen", behandelt AUTO_INCREMENT Spalten, den Mechanismus von MySQL zur Erzeugung von Sequenznummern. Es wird gezeigt, wie man neue Sequenzwerte erzeugt oder den letzten Wert ermittelt, wie man eine Spalte neu sequenziert und wie man Sequenzen zur Erzeugung von Zählern verwendet. Außerdem wird gezeigt, wie AUTO_INCREMENT Werte verwendet werden, um eine Master-Detail-Beziehung zwischen Tabellen aufrechtzuerhalten und welche Fallstricke dabei zu vermeiden sind.

Kapitel 16, "Joins und Unterabfragen verwenden", zeigt, wie du Operationen durchführst, die Zeilen aus mehreren Tabellen auswählen. Es wird gezeigt, wie man Tabellen vergleicht, um Übereinstimmungen oder Unstimmigkeiten zu finden, Master-Detail-Listen und Zusammenfassungen erstellt und Many-to-Many-Beziehungen auflistet.

Kapitel 17, "Statistische Techniken", zeigt, wie man deskriptive Statistiken, Häufigkeitsverteilungen, Regressionen und Korrelationen erstellt. Außerdem wird erklärt, wie man eine Reihe von Zeilen randomisiert oder zufällig aus einer Reihe von Zeilen auswählt.

In Kapitel 18, "Umgang mit Duplikaten", wird besprochen, wie du doppelte Zeilen erkennst, zählst und entfernst - und wie du verhinderst, dass sie überhaupt erst entstehen.

Kapitel 19, "Arbeiten mit JSON", zeigt, wie du JSON in MySQL verwenden kannst. Es behandelt Themen wie die Validierung, Suche und Manipulation von JSON-Daten. Das Kapitel beschreibt auch, wie du MySQL als Dokumentenspeicher nutzen kannst.

Kapitel 20, "Ausführen von Transaktionen", zeigt, wie mehrere SQL-Anweisungen behandelt werden, die zusammen als Einheit ausgeführt werden müssen. Es wird erläutert, wie man den Auto-Commit-Modus von MySQL steuert und wie man Transaktionen festschreibt oder zurücksetzt.

Kapitel 22, "Serververwaltung", ist für Datenbankadministratoren geschrieben. Es behandelt die Serverkonfiguration, die Plug-in-Schnittstelle und die Protokollverwaltung.

Kapitel 23, "Überwachen des MySQL-Servers", zeigt, wie man MySQL-Probleme, wie z. B. Start- oder Verbindungsfehler, überwacht und behebt. Es wird gezeigt, wie man MySQL-Logdateien, eingebaute Instrumente und Standard-Betriebssystem-Dienstprogramme verwendet, um Informationen über die Leistung von MySQL-Abfragen und internen Strukturen zu erhalten.

Kapitel 24, "Sicherheit", ist ein weiteres Verwaltungskapitel. Es befasst sich mit der Verwaltung von Benutzerkonten, wie dem Anlegen von Konten, dem Festlegen von Passwörtern und dem Zuweisen von Berechtigungen. Außerdem wird beschrieben, wie man Passwortrichtlinien einführt, unsichere Konten findet und behebt und Passwörter ablaufen oder ungültig werden lässt.

In diesem Buch verwendete MySQL-APIs

MySQL-Programmierschnittstellen gibt es für viele Sprachen, darunter C, C++, Eiffel, Go, Java, Perl, PHP, Python, Ruby und Tcl. Angesichts dieser Tatsache stellt das Schreiben eines MySQL-Kochbuchs die Autoren vor eine Herausforderung. Das Buch soll Rezepte für viele interessante und nützliche Dinge mit MySQL liefern, aber welche API oder APIs soll das Buch verwenden? Eine Implementierung jedes Rezepts in jeder Sprache zu zeigen, führt entweder dazu, dass nur sehr wenige Rezepte abgedeckt werden, oder zu einem sehr, sehr großen Buch! Außerdem führt es zu Redundanzen, wenn sich die Implementierungen in verschiedenen Sprachen stark ähneln. Andererseits lohnt es sich, die Vorteile mehrerer Sprachen zu nutzen, denn oft ist eine Sprache für die Lösung eines bestimmten Problems besser geeignet als eine andere.

Um dieses Dilemma zu lösen, haben wir eine kleine Anzahl von APIs ausgewählt, um die Rezepte in diesem Buch zu schreiben. Das macht den Umfang des Buches überschaubar und lässt gleichzeitig Spielraum bei der Auswahl verschiedener APIs:

  • Das Perl DBI Modul

  • Ruby, unter Verwendung des Mysql2-Gems

  • PHP, unter Verwendung der PDO-Erweiterung

  • Python, unter Verwendung des MySQL Connector/Python-Treibers für die DB-API

  • Go, unter Verwendung des Go-MySQL-Treibers für die Schnittstelle sql

  • Java, unter Verwendung des MySQL Connector/J-Treibers für die JDBC-Schnittstelle

Warum diese Sprachen? Perl ist eine weit verbreitete Sprache, die zum Zeitpunkt der Veröffentlichung der ersten Ausgabe dieses Buches sehr beliebt für das Schreiben von MySQL-Programmen war und auch heute noch in vielen Anwendungen eingesetzt wird. Ruby hat ein einfach zu verwendendes Modul für den Datenbankzugriff. PHP ist weit verbreitet, vor allem im Internet. Go wird in letzter Zeit immer beliebter und ersetzt andere Sprachen, vor allem Perl, in vielen MySQL-Anwendungen. Python und Java haben jeweils eine beträchtliche Anzahl von Anhängern.

Wir glauben, dass diese Sprachen zusammengenommen die Mehrheit der MySQL-Programmierer abdecken. Wenn du eine Sprache bevorzugst, die hier nicht aufgeführt ist, solltest du Kapitel 4 aufmerksam lesen, um dich mit den wichtigsten APIs des Buches vertraut zu machen. Wenn du weißt, wie du mit den hier verwendeten Programmierschnittstellen Datenbankoperationen durchführen kannst, wird es dir helfen, Rezepte für andere Sprachen zu übersetzen.

Hinweise zu Version und Plattform

Die Entwicklung des Codes in diesem Buch fand unter MySQL 5.7 und 8.0 statt. Da regelmäßig neue Funktionen zu MySQL hinzugefügt werden, funktionieren einige Beispiele nicht unter älteren Versionen. Mit MySQL 5.7 wurde zum Beispiel die Gruppenreplikation eingeführt, mit MySQL 8.0 die CHECK Constraints und die Common Table Expressions.

Wir gehen nicht davon aus, dass du mit Unix arbeitest, obwohl das unsere bevorzugte Entwicklungsplattform ist. (In diesem Buch bezieht sich der Begriff Unix auch auf Unix-ähnliche Systeme wie Linux und macOS X.) Das meiste Material hier ist sowohl für Unix als auch für Windows anwendbar.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden Schriftkonventionen verwendet:

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Wird verwendet, um Text anzuzeigen, den du beim Ausführen von Befehlen eingibst.

Constant width italic

Wird verwendet, um eine variable Eingabe anzugeben; du solltest einen Wert deiner Wahl ersetzen.

Kursiv

Wird für URLs, Hostnamen, Namen von Verzeichnissen und Dateien, Unix-Befehle und -Optionen, Programme und gelegentlich zur Betonung verwendet.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Vorsicht

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Befehle werden oft mit einer Eingabeaufforderung angezeigt, um den Kontext zu verdeutlichen, in dem sie verwendet werden. Befehle, die über die Befehlszeile eingegeben werden, werden mit einer Eingabeaufforderung $ angezeigt:

$ chmod 600 my.cnf

Diese Eingabeaufforderung ist Unix-Benutzern vertraut, aber sie bedeutet nicht unbedingt, dass ein Befehl nur unter Unix funktioniert. Wenn nicht anders angegeben, funktionieren die Befehle mit der Eingabeaufforderung $ in der Regel auch unter Windows.

Solltest du einen Befehl unter Unix als Benutzer root ausführen, lautet die Eingabeaufforderung stattdessen #:

# perl -MCPAN -e shell

Für Windows-spezifische Befehle wird die Eingabeaufforderung C:\> verwendet:

C:\> "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql"

SQL-Anweisungen, die aus dem Client-Programm mysql heraus eingegeben werden, werden mit einer Eingabeaufforderung mysql> angezeigt und mit einem Semikolon abgeschlossen:

mysql> SELECT * FROM my_table;

Bei Beispielen, die ein Abfrageergebnis so zeigen, wie du es bei der Verwendung von mysql sehen würdest, kürzen wir die Ausgabe manchmal ab, indem wir eine Ellipse (...) verwenden, um anzuzeigen, dass das Ergebnis aus mehr Zeilen besteht als angezeigt werden. Die folgende Abfrage erzeugt viele Zeilen, von denen die in der Mitte weggelassen wurden:

mysql> SELECT name, abbrev FROM states ORDER BY name;
+----------------+--------+
| name           | abbrev |
+----------------+--------+
| Alabama        | AL     |
| Alaska         | AK     |
| Arizona        | AZ     |
…
| West Virginia  | WV     |
| Wisconsin      | WI     |
| Wyoming        | WY     |
+----------------+--------+

Beispiele, die nur die Syntax von SQL-Anweisungen zeigen, enthalten nicht die Eingabeaufforderung mysql>, aber sie enthalten Semikolons, um zu verdeutlichen, wo Anweisungen enden. Dies ist zum Beispiel eine einzelne Anweisung:

CREATE TABLE t1 (i INT)
SELECT * FROM t2;

Aber dieses Beispiel steht für zwei Aussagen:

CREATE TABLE t1 (i INT);
SELECT * FROM t2;

Das Semikolon ist eine Notationshilfe, die in mysql als Anweisungsende verwendet wird. Es ist jedoch nicht Teil von SQL selbst. Wenn du also SQL-Anweisungen aus selbst geschriebenen Programmen (z. B. in Perl oder Java) heraus abgibst, solltest du keine abschließenden Semikolons einfügen.

Wenn eine Anweisung oder eine Befehlsausgabe zu lang ist und nicht auf die Buchseite passt, verwenden wir das Symbol , um anzuzeigen, dass die Zeile eingerückt wurde, damit sie passt:

mysql> SELECT 'Mysql: The Definitive Guide to Using, Programming,↩
    -> and Administering Mysql 4 (Developer\'s Library)' AS book;
+-----------------------------------------------------+
| book                                                |
+-----------------------------------------------------+
| Mysql: The Definitive Guide to Using, Programming,↩
  and Administering Mysql 4 (Developer's Library)     |
+-----------------------------------------------------+
1 row in set (0,00 sec)

The MySQL Cookbook Companion GitHub Repository

DasMySQL-Kochbuch hat ein begleitendes GitHub-Repository , in dem du Quellcode und Beispieldaten für die in diesem Buch entwickelten Beispiele sowie zusätzliche Dokumentation findest.

Quellcode und Daten des Rezepts

Die Beispiele in diesem Buch basieren auf dem Quellcode und den Beispieldaten einer Distribution namens recipes, die im dazugehörigen GitHub-Repository verfügbar ist.

Die recipes Distribution ist die Hauptquelle für die Beispiele, auf die im gesamten Buch verwiesen wird. Die Distribution ist auch als komprimierte TAR-Datei(recipes.tar.gz) oder als ZIP-Datei(recipes.zip) erhältlich. Beide Formate erstellen beim Entpacken ein Verzeichnis namens mysqlcookbook-VERSION/recipes.

Verwende die recipes Distribution, um dir eine Menge Tipparbeit zu ersparen. Wenn du zum Beispiel eine CREATE TABLE Anweisung im Buch siehst, die beschreibt, wie eine Datenbanktabelle aussieht, findest du in der Regel eine SQL-Batch-Datei im tables-Verzeichnis, mit der du die Tabelle erstellen kannst, anstatt die Definition manuell einzugeben. Wechsle in das tables-Verzeichnisund führe den folgenden Befehl aus, wobei filename der Name der Datei ist, die die Anweisung CREATE TABLE enthält:

$ mysql cookbook < filename

Wenn du Optionen für den MySQL-Benutzernamen oder das Passwort angeben musst, füge sie in der Befehlszeile hinzu.

Um alle Tabellen aus der recipes Distribution zu importieren, verwendest du den Befehl:

$ mysql cookbook < cookbook.sql

Die recipes Distribution enthält Programme, wie sie im Buch gezeigt werden, aber in vielen Fällen enthält sie auch Implementierungen in zusätzlichen Sprachen. Zum Beispiel kann ein Skript, das im Buch in Python gezeigt wird, in der recipes Distribution auch in Perl, Ruby, PHP, Go oder Java verfügbar sein. Das kann dir Übersetzungsaufwand ersparen, wenn du ein im Buch gezeigtes Programm in eine andere Sprache konvertieren möchtest.

Amazon Review Daten (2018)

Die in Kapitel 7, "Arbeiten mit Zeichenketten", verwendeten Amazon-Rezensionsdaten sind unter http://deepyeti.ucsd.edu/jianmo/amazon/index.htmlzu finden und können über dieses Formular heruntergeladen werden. Justifying recommendations using distantly labeled reviews and fined-grained aspects. Jianmo Ni, Jiacheng Li, Julian McAuley Empirical Methods in Natural Language Processing (EMNLP), 2019.

MySQL Kochbuch Begleitende Dokumente

Einige Anhänge, die in früheren Ausgaben des MySQL-Kochbuchs enthalten waren, sind jetzt unter im dazugehörigen GitHub-Repository in eigenständiger Form verfügbar. Sie liefern Hintergrundinformationen zu den im Buch behandelten Themen.

"Programme von der Kommandozeile aus ausführen" enthält Anweisungen zum Ausführen von Befehlen an der Eingabeaufforderung und zum Setzen von Umgebungsvariablen wie PATH.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/svetasmirnova/mysqlcookbook zum Download bereit .

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schreibe bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.

Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "MySQL Cookbook, Fourth Edition von Sveta Smirnova und Alkin Tezuysal (O'Reilly). Copyright 2022 Sveta Smirnova und Alkin Tezuysal, 978-1-492-09316-9."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/oreillymysql-ckbk4e aufrufen .

Schreib eine E-Mail an Kommentare oder technische Fragen zu diesem Buch zu stellen.

Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter https://www.oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

Folge uns auf Twitter: https://twitter.com/oreillymedia

Schau uns auf YouTube: https://www.youtube.com/oreillymedia

Danksagungen

Wir danken allen Leserinnen und Lesern, dass sie unser Buch gelesen haben. Wir hoffen, dass es dir gut tut und du es nützlich findest.

Von Paul DuBois, für die dritte Ausgabe

Danke an meine technischen Gutachter Johannes Schlüter, Geert Vanderkelen und Ulf Wendel. Sie haben mehrere Korrekturen und Vorschläge gemacht, die den Text in vielerlei Hinsicht verbessert haben, und ich schätze ihre Hilfe sehr.

Andy Oram drängte mich, mit der dritten Ausgabe zu beginnen und fungierte als Herausgeber, Nicole Shelby begleitete das Buch durch die Produktion und Kim Cofer und Lucie Haskins übernahmen das Korrekturlesen und die Indexierung.

Danke an meine Frau Karen, deren Ermutigung und Unterstützung während des Schreibprozesses mir mehr bedeutet, als ich sagen kann.

Von Sveta Smirnova und Alkin Tezuysal

Vielen Dank an unsere technischen Prüferinnen und Prüfer für ihre unschätzbaren Beiträge zu diesem Buch.

Gillian Gunson gab nicht nur umfassendes technisches Feedback, sondern zeigte auch, wie unser Text von Menschen mit unterschiedlichem Hintergrund gelesen werden kann. Ihre sprachlichen Vorschläge halfen uns, die Rezepte leichter lesbar zu machen. Ihre Aufmerksamkeit für Details half uns, Ungenauigkeiten und sogar potenzielle Risikobereiche zu identifizieren, die sich zeigen können, wenn die Datenbanklast wächst. Gillian überprüfte auch alle Codebeispiele und machte Vorschläge, wie wir den Ruby- und Java-Code besser an die aktuellen Standards anpassen können.

Ege Gunes hat alle Go-Sprachbeispiele überprüft, um sicherzustellen, dass sie dem Standardstil von Go entsprechen.

Karthik Appigatla, Timur Solodovnikov, Daniel Guzman Burgos und Vladimir Fedorkov haben ausgewählte Kapitel des Buches überprüft. Ihre Korrekturvorschläge haben uns sehr geholfen, das Buch zu verbessern.

Andy Kwan hat uns eingeladen, die vierte Auflage dieses Buches zu schreiben. Amelia Blevins und Jeff Bleiel waren unsere Lektoren und haben dazu beigetragen, dass das Buch leichter zu lesen ist. Rita Fernando überprüfte einige Kapitel und gab uns Rückmeldungen, die es uns ermöglichten, das Buch leichter lesbar zu machen und besser auf die O'Reilly-Standards abzustimmen.

Von Sveta Smirnova

Ich möchte mich bei meinen Kolleginnen und Kollegen vom Percona Support bedanken, die Verständnis dafür hatten, dass ich eine zweite Schicht an dem Buch arbeiten musste, und die mir erlaubten, bei Bedarf eine Auszeit zu nehmen.

Vielen Dank an meinen Mann, Serguei Lassounov, der mich bei all meinen beruflichen Bemühungen immer unterstützt.

Von Alkin Tezuysal

Ich möchte meiner Frau Aslihan und meinen Töchtern Ilayda und Lara für ihre Geduld und Unterstützung danken, als ich mich konzentrieren und die Zeit mit der Familie nutzen musste, um dieses Buch zu schreiben.

Vielen Dank an meine Kollegen und mein Team bei PlanetScale, insbesondere an Deepthi Sigireddi, für ihre besondere Betreuung und Unterstützung. Ein besonderer Dank geht auch an die MySQL-Community und meine Freunde und Familienmitglieder.

Ich möchte mich auch bei Sveta Smirnova für ihre unermüdliche Unterstützung bedanken, als sie mich auf meiner ersten Buchreise coachte.

Get MySQL Kochbuch, 4. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.