Sie sind auf Seite 1von 9

MySQL

Für Einsteiger

2010 – Malte Schöpski Seite 1 von 9


Inhaltsverzeichnis
Einleitung.........................................................................................................................................................2
Speicherengines................................................................................................................................................3
MyISAM.....................................................................................................................................................3
InnoDB........................................................................................................................................................3
Memory.......................................................................................................................................................3
MySQL in PHP.................................................................................................................................................4
Verbindung herstellen..................................................................................................................................4
Datenbank auswählen..................................................................................................................................4
In der Praxis übliche Implementierung........................................................................................................4
SQL-Befehle ausführen...............................................................................................................................4
Ergebnisse eines SQL-Befehls.....................................................................................................................4
Abfragen...........................................................................................................................................................5
Einfache Abfrage.........................................................................................................................................5
Bedingte Abfrage.........................................................................................................................................5
Sortierung....................................................................................................................................................5
Anzahl der Resultate begrenzen...................................................................................................................5
Datensätze hinzufügen......................................................................................................................................6
Datensätze entfernen.........................................................................................................................................6
Datensätze verändern........................................................................................................................................6

Einleitung
MySQL ist eine kostenlose Datenbank der Firma Oracle. Oftmals wird sie zusammen mit PHP eingesetzt,
um dynamische Internetseiten zu realisieren.

Im Gegensatz zu Access ist MySQL besser für Mehrbenutzeranwendungen geeignet, außerdem verfügt es
über keine direkte grafische Oberfläche, was für den Einsatz auf Servern sinnvoll ist. Befehle können von
z.B. einem PHP-Script aus direkt an den Datenbankserver gesendet werden, alternativ sind grafische Clients
verfügbar, die sich zum MySQL-Server verbinden können.

2010 – Malte Schöpski Seite 2 von 9


Speicherengines

Um Daten zu speichern, verfügt MySQL über mehrere Speicherengines. Folgende sind nennenswert:

MyISAM
MyISAM war lange Zeit die Standardengine von MySQL. Es besitzt keine Transaktionssicherung, das
bedeutet die Tabelle wird für jeden Zugriff gesperrt. Das ist allerdings auch nicht immer nötig, beispielsweise
können mehrere Lesezugriffe gleichzeitig ausgeführt werden, ein Lesezugriff muss aber auf einen
Schreibzugriff warten genauso wie ein Schreibzugriff auf einen Lesezugriff wartet.

InnoDB
InnoDB ist die derzeitige Standardengine. Im Gegensatz zu MyISAM ist sie transaktionssicher. Das
bedeutet, das die Einschränkung von gleichzeitigen Schreib- und Lesezugriffen nicht notwendig ist.

Memory
Memory ist die dritte Engine und wird für temporäre (zeitlich begrenzte) Daten eingesetzt. Die
Tabellenstruktur wird wie auch bei MyISAM und InnoDB auf der Festplatte gespeichert, die Daten blieben
allerdings im RAM. Der Vorteil ist, das dies einerseits sehr schnell ist, andererseits langfristig nicht benötigte
Daten nicht die Festplatte zumüllen. Der Nachteil ist, das bei einem Neustart des Rechners auf dem die
Datenbank läuft, alle Daten verloren sind. Außerdem sind einige Datentypen nicht unterstützt.

2010 – Malte Schöpski Seite 3 von 9


MySQL in PHP
Um MySQL in PHP nutzen zu können, ist natürlich ein gewisses Grundwissen in PHP notwendig. PHP
liefert einige Funktionen zur Nutzung von MySQL, die nachfolgend kurz beschrieben werden:
Verbindung herstellen:

Verbindung herstellen
Um eine Verbindung zu einer MySQl-Datenbank herzustellen ist unter PHP folgender Befehl nötig:
mysql_connect(“server-adresse“, “benutzername“, “kennwort“);

Datenbank auswählen
Nachdem wir uns zum Server verbunden haben, wäre es sinnvoll eine Datenbank auszuwählen, mit der wir
arbeiten wollen. Das ist mit folgendem Befehl möglich:
mysql_select_db(“Datenbankname“);

In der Praxis übliche Implementierung


In der Praxis ist es oftmals so, dass die Verbindung zur MySQL-Tabelle für mehrere Seiten benötigt wird.
Deshalb werden die Serverdaten oft gerne per include in eine eigene Datei ausgelagert, die nur die
Verbindung zu MySQL herstellt und die Datenbank auswählt.
In die include-Datei werden die beiden oben aufgeführten Befehle geschrieben, anschließend kann diese per
include “dateiname.php“;
in jedes Script eingebunden werden. Natürlich muss der Pfad entsprechend angepasst werden.

SQL-Befehle ausführen
Um SQL-Befehle, wie die im nachfolgenden Kapitel beschriebenen auszuführen, findet oftmals die Funktion
mysql_query() Anwendung. Ein einfaches Beispiel:
$ergebnisvariable = mysql_query(“SELECT * FROM Mitarbeiter“);
Dieses Beispiel wird alle Attribute der Tabelle Mitarbeiter zurückgeben und in die Variable $ergebnisvariable
speichern.

Ergebnisse eines SQL-Befehls


Oftmals wird hier eine while-Schleife verwendet, die z.B. per mysql_fetch_array die Resultate der Abfrage
nacheinander Abarbeitet. Beispiel:
while ($reihe = mysql_fetch_array($ergebnisvariable, MYSQL_BOTH)) {
echo $reihe['Vorname']; }
Dabei werden die Befehle in der Klammer, also in diesem Falle das ausgeben aller in der Tabelle enthaltenen
Vornamen, für jeden Datensatz ausgeführt.

Neben diesen Funktionen sind noch eine Vielzahl weiterer Funktionen verfügbar, deren Dokumentation unter
http://de.php.net/manual/de/ref.mysql.php zur Verfügung steht.

2010 – Malte Schöpski Seite 4 von 9


Abfragen
Mittels Abfragen lassen sich Daten aus einer MySQL-Datenbank abrufen. Dazu wird der Befehl SELECT
verwendet.

Einfache Abfrage
Eine einfache Abfrage könnte z.B. lauten:
SELECT VORNAME, NACHNAME FROM Kunden
Dieses Beispiel liefert die Attribute Vorname und Nachname aus der Tabelle Kunden

Möchte man alle Attribute zurückgeliefert bekommen, kann ein Wildcard eingesetzt werden:
SELECT * FROM Kunden
Jetzt werden alle Attribute zurückgegeben.

Bedingte Abfrage
Wir können eine bestimmte Bedingung geben, und nur Datensätze die dieses Kriterium erfüllen, werden
zurückgegeben. Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl'
Jetzt werden alle Datensätze zurückgegeben, deren Attribut „Vorname“ den Wert „Karl“ enthält.

Möchten wir mehrere Bedingungen gleichzeitig prüfen, können wir diese mit einem OR oder AND
verknüpfen. Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' OR Nachname LIKE 'Müller'
Dieses Beispiel wird alle Datensätze zurückgeben, bei denen entweder das Attribut Vorname den Wert „Karl“
enthält oder der Nachname den Wert „Müller“.

SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' AND Nachname LIKE 'Müller'
Dieses Beispiel wird nur Datensätze zurückgeben, bei denen der Vorname „Karl“ ist und der Nachname
„Müller“. Ein Karl Müller wird also zurückgegeben, ein Hans Müller oder ein Karl Janssen allerdings nicht.

Sortierung
Möchten wir die zurückgegebenen Datensätze sortieren, lässt sich der Befehl ORDER BY verwenden.
Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' ORDER BY Nachname
Jetzt werden alle Kunden mit Vornamen Karl ausgegeben, sortiert von A-Z nach ihrem Nachnamen.

Möchte man von Z-A sortieren, muss noch der Befehl DESC angehängt werden. Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' ORDER BY Nachname DESC

Anzahl der Resultate begrenzen


Möchte man nur eine bestimmte Anzahl an Resultaten haben, lässt sich der Befehl LIMIT verwenden.
Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' ORDER BY Nachname LIMIT 5
Jetzt werden nur die ersten zehn Datensätze angezeigt.

Außerdem lässt sich ein Anfangspunkt angeben, ab dem MySQL zu zählen anfängt, Beispiel:
SELECT * FROM Kunden WHERE Vorname LIKE 'Karl' ORDER BY Nachname LIMIT 5, 10
Damit werden zehn Datensätze angezeigt, angefangen wird aber erst mit dem 15., es sind also Datensätze 5-
15 zu sehen.

2010 – Malte Schöpski Seite 5 von 9


Datensätze hinzufügen
Um einen neuen Datensatz in die Tabelle hinzuzufügen wird der Befehl INSERT INTO genutzt.
Dabei werden zuerst die Attribute angegeben, die ausgefüllt werden sollen und danach die entsprechenden
Daten. Beispiel:
INSERT INTO Kunden (Vorname, Nachname, Strasse, PLZ) VALUES ('Franz', 'Meyer', 'Bahnhofstraße 88',
'26441')
Das Feld ID ist ein AutoIncrement-Feld. Dessen Wert wird automatisch erhöht, darum muss man sich also
hier nicht kümmern.

Datensätze entfernen
Um einen Datensatz zu entfernen lässt sich der Befehl DELETE nutzen. Beispiel:
DELETE FROM Kunden WHERE Vorname LIKE 'Franz' AND Nachname LIKE 'Meyer'
Hiermit wird der Datensatz für Franz Meyer gelöscht. Gibt es in der Tabelle mehrere Franz Meyer, werden
diese alle gelöscht. Ein Löschvorgang lässt sich auch nicht rückgängig machen.

Datensätze verändern
Um Datensätze zu verändern lässt sich der Befehl UPDATE benutzen. Beispiel:
UPDATE Kunden SET Nachname = 'Meyer' WHERE Vorname LIKE 'Hans'
Dieser Befehl wird bei allen Kunden, die den Vornamen Hans tragen, als neuen Nachnamen „Meyer“
eintragen.

2010 – Malte Schöpski Seite 6 von 9


Tabelle erstellen
Um eine Tabelle zu erstellen, wird in MySQL der Befehl CREATE TABLE verwendet. Bei diesem werden
alle Attribute mit ihren Datentypen und Spezialeigenschaften wie z.B. Primärschlüssel oder Automatischer
Durchnummerierung beschrieben. Beispiel:
(1) CREATE TABLE Kunden (
(2) ID INT AUTO_INCREMENT PRIMARY KEY,
(3) Vorname VARCHAR(50) NOT NULL,
(4) Nachname VARCHAR(50) NOT NULL,
(5) Strasse VARCHAR(50) NOT NULL,
(6) PLZ VARCHAR(5) NOT NULL,
(7) )
Der Befehl ist der Übersichtlichkeit halber auf mehrere Zeilen getrennt und mit einer Nummerierung
versehen, man könnte natürlich auch alles in eine Zeile schreiben. Kommen wir also zu dem Sinn dieses
etwas kompliziert anmutenden Konstrukts:
In der ersten Zeile wird der Befehl mit CREATE TABLE eingeleitet. Unsere Neue Tabelle wird Kunden
heißen. Hier ist die Großschreibung zu beachten. Einem unter Windows laufenden MySQL-Server ist die
Großschreibung egal, einem Linux-Server (Wie es die meisten Webserver sind) unterscheidet allerdings
zwischen Groß- und Kleinschreibung, die Tabelle Kunden und die Tabelle kunden können also zwei ganz
unterschiedliche Tabellen sein.
Die Tabelle wird folgende Attribute beinhalten:
Die ID wird als Integer gespeichert. Dies bedeutet eine Ganzzahl, also z.B. 1 oder 2, aber nicht 1,5 oder
„zwei“. Weiterhin wird mit AUTO_INCREMENT angegeben, das dieses Attribut automatisch
durchnummeriert wird, was bei einer ID oft sinnvoll ist. Weiterhin steht in der Zeile ein PRIMARY KEY.
Das bedeutet, dass die ID der Primärschlüssel unserer Tabelle ist. Jede Tabelle sollte einen Primärschlüssel
besitzen, der nur ein einziges Mal vorkommt, so dass jeder Datensatz zweifelsfrei identifiziert werden kann.

2010 – Malte Schöpski Seite 7 von 9


Einführung in phpMyadmin

Statt die SQL-Befehle mühsam per Text eingeben zu müssen, lässt sich auch das kostenlose Tool
phpMyadmin einsetzen. Dieses bietet eine grafische Weboberfläche um Datensätze anzuzeigen, zu
verändern, neue Tabellen zu erstellen oder auch zu löschen uvm.

Viele Webhoster stellen phpMyadmin bereits standardmäßig zur Verfügung, falls dies nicht der Fall sein
sollte, muss es selber installiert und konfiguriert werden, womit wir uns allerdings in dieser Anleitung nicht
beschäftigen werden.

Erste Schritte
Nachdem man vor dem Login-Schirm von phpMyadmin sitzt, meldet man sich mit einem gültigen
Benutzerkonto an MySQL an, worauf man in den Hauptbildschirm gelangt. Hier lassen sich Einstellungen zu
phpMyadmin vornehmen, beispielsweise die verwendete Sprache oder der Oberflächenstil.

Neue Datenbank anlegen


Auf der Linken Seite befindet sich eine Leiste, die immer die vorhandenen Datenbanken anzeigt. Ist dort
keine vorhanden, muss eine neue angelegt werden, was im Hauptbildschirm unter „Neue Datenbank
anlegen“ möglich ist. Die Kollation ist hierbei der verwendete Zeichensatz, bspw. utf8_general_ci und als
Name kann z.B. Kundendaten vergeben werden. Nach der Erstellung wird, wenn diese erfolgreich ist(es
kann durchaus sein, das der Benutzer mit dem man sich angemeldet hat kein Recht hat, Datenbanken zu
erstellen) in die neue Datenbank gewechselt und der an mySQL gesendete Befehl angezeigt, dieser lautet im
Beispiel also:
CREATE DATABASE `Kundendaten` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Neue Tabelle anlegen


Jetzt kann eine neue Tabelle erstellt werden. Dabei wird der Name und die Zahl der Attribute („Felder“)
angegeben, in unserem Beispiel Kunden(ID, Vorname, Nachname, Strasse, PLZ) also als Name Kunden und
als Felderanzahl 5.
Anschließend wird man auf eine eventuell etwas wüst aussehende Seite geleitet. Hier werden die genauen
Daten der Tabelle eingegeben, ich werde hier am besten einen Bildschirmausschnitt zeigen:

Dabei wurden ein paar Spalten abgeschnitten, diese sind für unsere Tabelle allerdings auch unwichtig.
Nach einem Klick auf Speichern sollte phpMyadmin uns jetzt eine neue Tabelle erzeugt haben, es meldet den
dafür gesendeten Befehl und zeigt uns unsere (noch leere) Tabelle an.
In der oberen Bildschirmhälfte befindet sich jetzt ein Menü. Wir befinden uns derzeit noch im Reiter
„Struktur“.

Daten in eine Tabelle einfügen


Befinden wir uns in der Tabellenansicht, in der wir beim vorherigen Absatz bereits waren, können wir jetzt
auf Einfügen drücken. Jetzt kann ein/zwei neue Datensätze eingefügt werden. Wollen wir noch mehr
Datensätze einfügen, können wir unter Einfügen mit … Zeilen neu starten ein größeres Eingabeformular
generieren. Haben wir unsere Daten eingeträgen drücken wir entweder auf ein OK direkt unter einem
Datensatz, um nur diesen zu speichern oder auf das OK ganz unten, um alle zu speichern.

2010 – Malte Schöpski Seite 8 von 9


Daten anzeigen
Um unsere Daten jetzt anzuzeigen wählen wir entsprechend den ersten Reiter aus und sehen jetzt alle unsere
Datensätze. Über die Knöpfe in der Spalte Aktion lassen sich diese Ändern, Löschen etc.

2010 – Malte Schöpski Seite 9 von 9