Praktischer Einstieg in phpMyAdmin

From DHVLab

Grundlegendes und Aufbau der Oberfläche Mit phpMyAdmin lernen Sie eines der populärsten MySQL-Administrationswerkzeuge kennen. Es handelt sich dabei um eine grafische, webbasierte Bedienoberfläche zur Verwaltung Ihrer Datenbanken. Der Zugriff erfolgt unmittelbar über den Browser (standardmäßig ist ein Google Chrome-Browser installiert), den Sie im DHVLab (→ Hauptmenü) öffnen. Geben Sie in die Adresszeile folgenden Link ein und melden Sie sich wie gewohnt mit Ihren Benutzerdaten an:
web.dmz.dhvlab.fo/sql[A 1]

Kennenlernen der Oberfläche

Es öffnet sich die Startseite der grafischen Benutzeroberfläche phpMyAdmin. Zunächst möchten wir uns mit der Oberfläche vertraut machen und dabei die Funktionsweise kennenlernen. Ein allgemeiner Hinweis vorne weg: Es können immer mehrere phpMyAdmin-Seiten parallel geöffnet sein.

Linke Spalte

Unter dem phpMyAdmin-Logo befinden sich einige Symbole mit zentralen Funktionen: (1) Startseite, (2) Logout, (3) Dokumentation[A 2] sowie der (4) Refresh-Button. Letzterer sollte immer die erste Wahl sein, wenn eine Änderung in der linken Tabellenspalte nicht gleich angezeigt wird.
Wichtiger Hinweis: Verwenden Sie nicht den Vor- bzw. Zurückbutton Ihres Browsers zum Navigieren innerhalb der Oberfläche.

Unterhalb der Navigation befindet sich die Liste aller verfügbaren Datenbanken. Im Zuge Ihrer Anmeldung im DHVLab wurde für Sie bereits eine persönliche Datenbank angelegt ("labuser_mmustermann"); diese Datenbank finden Sie dort ebenso wie Datenbanken, die für den von Ihnen besuchten Kurs angelegt wurden und allgemeine Forschungsdatensammlungen, auf die Sie Lesezugriff besitzen (z.B. "all_art_moma" (Daten des Museum of Modern Art)).
Um mit den Forschungsdatensammlungen arbeiten zu können, kopieren Sie diese (Struktur und Daten) in Ihre eigene Datenbank:
Operationen → "Kopiere Tabelle nach" → wählen Sie dort Ihre persönliche Datenbank aus und bestätigen Sie mit "OK"

Operative Ebene

Am oberen Bildrand wird Ihnen die dunkelgraue Statusleiste angezeigt. Klicken Sie in der linken Spalte auf eine beliebige Datenbank, so wird die detaillierte Pfadangabe in der genannten oberen Leiste angezeigt. Darunter befindet sich die operative Ebene ("Datenbanken", "SQL", "Status", "Exportieren", "Importieren", "Einstellungen", "Mehr").

Einstellungen:

Unter "Einstellungen" können Sie die Anzeige der phpMyAdmin-Umgebung nach Ihren Wünschen optimieren. Wir möchten an dieser Stelle nur eine exemplarische Veränderung vornehmen:
Standardmäßig wird neben jeder Tabellenspalte die Option "Bearbeiten" und "Löschen" angegeben. Alternativ kann man sich diese Operationen auch als platzsparende Symbole anzeigen lassen. Wir gehen wie folgt vor:
"Einstellungen" → "Hauptpanel" → Anzeigemodus → "Wie verschiedene Aktions-Links angezeigt werden": Symbole → abschließen durch Klick auf "Übernehmen"

SQL:

Unter "SQL" findet sich die Eingabemaske für SQL-Abfragen. Sie können dort beliebige SQL-Eingaben vornehmen. Sinnvollerweise wählen sie zuvor die Tabelle aus, die Sie bearbeiten möchten. Dadurch erhalten Sie zum Einen bereits eine vorgefertigte SQL-Abrage (SELECT * FROM `tabellenname` WHERE 1), zum Anderen finden Sie rechts neben der Eingabemaske eine Liste aller in der Tabelle verfügbaren Spalten. Ein Doppelklick auf einen Spaltenname fügt diesen an der aktuellen Cursor-Position in der Eingabemaske ein. Zudem finden Sie unter der Eingabemaske verschiedene Abfragearten (SELECT *, SELECT, INSERT, UPDATE, DELETE[A 3]), die Sie durch einen einfachen Klick anwählen können. Wir werden auf die SQL-Abrfragen im nächsten Kapitel zurückkommen.

Exportieren:

Wählen Sie zunächst die Datenbank oder Tabelle aus, die Sie aus der SQL-Datenbank exportieren möchten. Klicken Sie anschließend auf "Exportieren" in der operativen Ebene. Bei "Art des Exports" können Sie es in der Regel "Schnell - nur notwendige Optionen anzeigen" belassen. Bei "Format" können Sie zwischen einer Reihe an Ausgabeformaten wählen. Sinnvollerweise speichern Sie Ihre Ausgabe entweder als SQL-File[A 4] oder als CSV[A 5], zur Weiterverarbeitung in einem Tabellenkalkulationsprogramm wie Excel/Calc oder auch zum Einlesen in graphbasierte Datenbanken.

Importieren:

Neben dem Export von Daten können Sie selbstverständlich auch Daten in Ihre Datenbank importieren[A 6]. Beachten Sie stets, in welcher Navigationsebene Sie sich aktuell befinden, bevor Sie auf "Importieren" klicken. Die zu importierende Datei wird genau dort eingefügt. Wählen Sie eine Datei aus, die Sie importieren möchten. Wählen Sie dann das Format der ausgewählten Datei aus. Wenn Sie als Dateiformat CSV auswählen, müssen Sie bei den nun angezeigten "Formatspezifischen Optionen" noch spezifizieren, durch welches Zeichen die einzelnen Spalten in der Datei getrennt werden (z.B. ",", ";", "\t"). Um dies zu ermitteln, werfen Sie zuvor mit einem Texteditor einen Blick in die CSV-Datei. Mit Klick auf "OK" schließen Sie den Import der Tabelle ab. Sie wird an der entsprechenden Stelle in der linken Auflistung angeführt[A 7].
Aufgabe: Erstellen Sie über den eben beschriebenen Weg einen SQL-Dump einer beliebigen Tabelle aus Ihrer Datenbank. Öffnen Sie anschließend die Datei in einem Texteditor Ihrer Wahl (z.B. Notepad++, gvim, UltraEdit) und sehen Sie sich die Struktur des Inhaltes an. Sie werden sehen, dass alle Informationen in dem Format wiederzufinden sind, wie Sie es in Ihrer Tabelle zuvor definiert haben. Löschen Sie im Anschluss die entsprechende Tabelle aus Ihrer SQL-Datenbank. Importieren Sie anschließend das SQL-Backup wiederum in Ihre Datenbank. Ihre Tabelle ist nun wieder vollumfänglich nutzbar.

Allgemein gilt: Alle Aktionen können auch über den entsprechenden SQL-Befehl erfolgen[A 8]. Für den eben geschilderten Import einer CSV-Datei würde der entsprechende SQL-Befehl wie folgt aussehen:
LOAD DATA LOCAL INFILE '[pfad]/[ergänzen]/dateiname.csv' INTO TABLE `tabellenname` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Bedeutung der einzelnen Bestandteile:

LOAD DATA LOCAL INFILE Pfad der Datei auf dem lokalen PC angeben
INTO TABLE Zieltabelle angeben
FIELDS TERMINATED BY Symbol zum Trennen der CSV-Felder
ENCLOSED BY Symbol am Anfang und am Ende eines CSV-Feldes
LINES TERMINATED BY Symbol am Ende des jeweiligen Datensatzes (\n = New Line)
IGNORE 1 ROWS Ignoriert die erste Zeile, weil diese z.B. Metainformationen enthält



Wählen Sie die importierte Tabelle aus und es wird standardmäßig zunächst ihr Inhalt angezeigt. Unter "Struktur" können Sie sich die Tabellenstruktur ansehen, bearbeiten, kopieren oder löschen. Tabellen bestehen aus mehreren Spalten; diese haben jeweils einen Namen, einen Datentyp und eine Kollation:

  • Spaltennamen können beliebig gesetzt werden
  • Der Datentyp definiert, welche und wie viele Zeichen in einer Spalte vorkommen können.
  • Dimensionierung: Bestimmte Datentypen erfordern die Angabe der maximalen Feldbreite. Achten Sie darauf, stets genug Spielraum bei der Zeichenzahl zu gewähren; ist die maximale Zeichenzahl zu niedrig angesetzt, werden die Einträge entsprechend abgeschnitten.
  • Kollation: Bei MySQL kommt standardmäßig der 8-bit-Zeichensatz Latin1 zum Einsatz (latin1_swedish_ci). Dieser Zeichensatz enthält zwar die deutschen Umlaute, bei Sonderzeichen wie dem Euro-Symbol wird es dagegen schon problematisch. Alternativ sollte daher auf UTF-8 zurückgegriffen werden, welches weit umfassendere Kodierungen ermöglicht. bei diesem Zeichensatz werden die ersten 128 Zeichen des ASCII-Zeichensatzes (7 bit) in einem Byte kodiert, alle anderen in zwei bis vier Bytes.

Für ausführliche Informationen zur Zeichenkodierung, schwerpunktmäßig mit der Frage nach Groß- und Kleinschreibung (case-sensitive vs. case-insensitive = Zusatz "_ci" bei Kollation) siehe:
Dh-Lehre

  • NULL: In diesem Feld kann angegeben werden (ja/nein), ob ein Tabellenfeld leer bleiben darf, d.h. ohne Inhalt, oder nicht (eine ID-Spalte darf zum Beispiel nie leer sein). NULL sollte nur dann verwendet werden, wenn eine leere Zelle (d.h. nicht NULL) in einer Anwendung falsch interpretiert werden könnte (z.B. bei Geokoordinaten).
  • Primärschlüssel (unter "Aktion"): Ein Primärschlüssel kann einer Tabellenspalte zur eindeutigen Identifizierung zugewiesen werden.
  • Auto Increment (A I') via "Aktion" → "Bearbeiten": Wenn jedem Eintrag einer Tabelle automatisch eine fortlaufende ID zugeteilt werden soll, so wird für dieses Feld "Auto Increment" angewählt.

Datentypen

Es seien an dieser Stelle nur einige gängige Datentypen angeführt:

Datentyp Beschreibung
INT (3) Integer, Ganzzahlen inkl. 0; Länge bestimmt Anzahl der Ziffern, hier z.B. 3
DECIMAL (5) Dezimalzahlen; Länge bestimmt Anzahl der Ziffern, hier z.B. 5
FLOAT(10,6) Gleitkommazahlen; eignet sich z.B. für die Eingabe von Geokoordinaten (10,6): 48.137222
ENUM Vordefinierte Auswahlliste; dadurch nur begrenzte Möglichkeiten bei der Zuweisung von Attributen, z.B. Auswahl Geschlecht: m, w
CHAR (10) Beliebige Zeichenkette ("Strings") mit fester Breite im Speicher, hier z.B. 10.
VARCHAR (240) Various Character; Länge bestimmt die maximale Anzahl der Zeichen, hier z.B. 240 (maximal: 65535 Zeichen), jedoch auch weniger Zeichen möglich
TEXT Zeichenkette bis maximal 65535 Zeichen, max. Gesamtzeichenzahl im Gegensatz zu VARCHAR nicht kürzer definierbar
LONGTEXT Zeichenkette im Umfang von 4.294.967.295 Buchstaben (max. 4 GB)
DATE (2016-08-06) Datumsangabe (yyyy-mm-dd); DATE ist nur sinnvoll bei modernen Datumsangaben ab etwa 1970. Bei früheren Angaben kann es passieren, dass eine MySQL-Installation die Angabe falsch interpretiert und entsprechend umformt. Bei historischen Datumsangaben sollte daher stets auf VARCHAR zurückgegriffen werden. Bei Datumsangaben ohne Tagesdatum gilt es zu bedenken, dass es sich sowohl um den 1. als auch um den 31. eines Monats handeln kann. Eine entsprechende Modellierung ist daher erforderlich.
DATETIME (2016-08-06 23:59:01) Datumsangabe mit Uhrzeitangabe (yyyy-mm-dd 00:00:00)
PRIMARY(INT) Primärschlüssel, angelegt über Index, AutoIncrement aktivieren
CONSTRAINT ... REFERENCES Definition von Fremdschlüsselspalten
CONSTRAINT ... NOT NULL Erzwingen von Eingabewerten; ein Feld dieser Spalte darf nicht leer bleiben
UNIQUE In einer UNIQUE-Spalte dürfen keine zwei identischen Elemente vorhanden sein.


Neben dem Import einer Tabelle kann man mit Hilfe von SQL Tabellen in pypMyAdmin anlegen und in diese später Daten importieren. Mit folgender Eingabe wird eine neue Tabelle angelegt, die über eine fortlaufende ID-Spalte verfügt, die gleichzeitig den Primärschlüssel für die Tabelle darstellt:

CREATE TABLE Historiker
(
historikerID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
vorname VARCHAR(255),
einrichtung VARCHAR(255),
ort VARCHAR(255)
);


Im Folgenden Abschnitt werden wir die Datenbanksprache SQL näher kennenlernen.
Zurück zu Das relationale Datenmodell - Theoretische Grundlagen II ⇐⇒ Weiter zu Erlernen einer Datenbanksprache: Structured Query Language (SQL) I

Anmerkungen

  1. Alternativ können Sie auch außerhalb des DHVLab auf die MySQL-Umgebung zugreifen. Geben Sie hierzu folgende Adresse in Ihren Browser ein: http://dhvlab.gwi.uni-muenchen.de/sql/.
  2. Hierüber gelangt man zur offiziellen MySQL-Dokumentation, ein umfassendes Manual, welches keine Fragen offen lassen sollte: [1]
  3. Achtung: Der DELETE-Befehl sollte mit nur mit größter Vorsicht verwendet werden; einmal gelöscht, sind die Daten unwiderruflich verloren.
  4. Ein SQL-Backup wird auch als "SQL-Dump" bezeichnet. Es empfiehlt sich zum Absichern der Daten, regelmäßig ein solches Backup Ihrer gesamten Datenbank durchzuführen.
  5. CSV (Comma Separated Values): Bei CSV handelt es sich um ein einfaches relationales Dateiformat, bei dem jede Zeile einen Datensatz darstellt. Jeder Datensatz wiederum besteht aus mehreren Spalten, die durch ein Komma, Semikolon oder Tabstopp getrennt sind. Die Daten jeder Spalte werden durch Anführungszeichen ("...") eingeschlossen. Eine CSV-Datei können Sie aus einer bestehenden Calc/Excel-Tabelle erzeugen ("Speichern unter").
  6. Zum Folgenden ausführlich das Handbuch von Stephan Lücke auf dh-lehre.
  7. Für den Import sehr großer SQL-Dateien empfiehlt sich das Programm "mysqlimport"; vgl. hierzu DH-Lehre.
  8. Bei jeder datenverändernden Aktion, die über die Schaltflächen ausgeführt wird, wird der zugehörige SQL-Befehl angezeigt. Dies ist für das Erlernen der Abfragesprache nützlich.