Suche nach als

MySQL:

Auf dieser Seite:

Daten die ich sammle, beware ich in einer Datenbank auf, dadurch werden die Inhalte in Tabellen strukturiert. Die Tabellen haben Spalten (Kolonnen) und Zeilen (Linien). Hier wird beschrieben, wie eine Datenbank aufgebaut wird und ihre Tabellen erstellt und befüllt werden.

Einführung in Datenbanken

Aufbau einer Datenbank

Es gibt 'Object Orientierte' Datenbanksysteme (welche mich hier noch nicht interessieren) und 'Relationale'. Eine 'Relationale' Datenbank besteht aus mehreren Tabellen in die Informationen abgelegt und zu gegebener Zeit aufgerufen werden. Ein Datensatz entspricht einer Tabellenzeile mit mehreren Feldern.
Wenn in vielen Feldern der gleiche Wert steht spricht man von Redundanz (Überflüssigkeit). Möchte man diesen Wert ändern, dann müssen alle Datensätze durchsucht und geändert werden was leicht zu einem Fehler führt; eine Datenbank mit fehlerhaften Datensätzen nennt man inkonsistent.

Um Redundanz wie Inkonsistent zu vermeiden, werden die sich wiederholenden Werte einer Kolonne (Spalte) in eine zweite Tabelle ausgelagert, welche mit der ersten Tabelle in Relation steht. Die Verbindung dieser zweiten Tabelle zur ersten Tabelle geschiet durch ein ID-Feld welches einen eindeutigen, exklusiven Eintrag enthält, auch Primärschlüssel genannt, und jeden Datensatz identifiziert. In der ersten Tabelle wird in die entsprechenden Felder dann immer nur noch dieser Primärschlüssel des in die zweite Tabelle ausgelagerten Wertes notiert. Eine Änderung muss folglich nur noch einmalig in der zweiten Tabelle vorgenommen werden (Beispiel folgt weiter unten). Dies kann so weit getrieben werden, dass die erste Tabelle nur noch aus Primärschlüsselangaben besteht und für jede Spalte eine eigene Tabelle erstellt wird.

MySQL ist ein OpenSource Datenbanksystem welches auf der Datanbank-Abfragesprache SQL (structured query language) aufbaut. MySQL ist ein Relationales Datenbanksystem.

MySQL Konsole

Eine Datenbank erstellen

Überspringen Sie die Details, 'php MyAdmin' übernimmt für Sie das Coden.

Eine Datenbank wird direkt auf einem Datenbank-Server erstellt.
Via Controllpannel des Hosts erreicht man meisst ein Tool: 'php MyAdmin' (siehe weiter unten)!
Hardcore Cracks können auch die 'MySQL Konsole' aufrufen (siehe folgende Abschnitte).

Ein Doppelklick auf die Datei 'mysql.exe' im Verzeichnis 'bin' des Apache Servers (mein Pfad im Xampp-Packet von Apache-Friends ist: c:\Programme\Xampp\mysql\bin\mysql.exe) im WindowsExplorer, öffnet ein Eingabefenster, welches so rudimentär wie ein Dos-Eingabefenster aussieht und Konsole (MySQL monitor) genannt wird. Ich arbeite hier also direkt auf dem Apache-Server unter der UNIX-Umgebung. In diesem schwarzen Fenster arbeite ich mit der Tastatur (also ohne Maus) um den ersten mySQL-Befehle einzugeben:
CREATE DATABASE pflanzen;
Führen Sie diese Befehlszeile aus durch das Betätigen der ENTER-Taste.
mySQL gibt Ihnen nun Antwort... (siehe Abblidung).

Datenbank 'pflanzen' und Tabelle 'blumen' in der MySQL-Konsole

Abbildung: Die MySQL Konsole beim Erstellen der Datenbank 'pflanzen' und der Tabelle 'blumen' .
Schön zu sehen die Darstellung der Tabelle 'blumen' in der Konsole durch 'EXPLAIN blumen;' (noch ohne Inhalte)
Die ERROR Nachricht wurde ausgegeben, weil beim ändern des Datentyps der Spalte 'klima' in VARCHAR kein Wert (20) eingegeben wurde.

MySQL sollte durch Benutzername und Passwort vor Zugriff von aussen geschützt werden im Ordener: C:\Programme\xampp\mysql\bin\ die Datei:'winmysqladmin.exe' (bei mir zuhause, aber normalerweise erhält man den Zugang zum separaten Datenbankserver vorkonfiguriert vom Hoster).

SQL Namenskonventionen und Regeln

SQL Befehle

mysql im batch mode


Structured Query Language

Oberbefehle

help; oder \h gibt Übersicht aller Befehle aus
source text_file_name; oder \. übergeben eines SQL-Scripts als Parameter eines Befehls
Hier kommt der Name des Textfiles (welches den auszuführenden Code beinhaltet)
clear; oder \c löscht den Befehlspuffer
exit; schliesst die Konsole
Pfeiltasten hoch/runter kopiert eine vorher gemachte Befehlszeile, die dann statt neu eingegeben nur korrigiert werden muss

Datenbankbefehle

CREATE DATABASE pflanzen; Erstellt eine neue Datenbank namens 'pflanzen'
DROP DATABASE pflanzen; Löscht die Datenbank namens 'pflanzen' unwiederruflich
STATUS datenbankname; gibt Status der MySQL-Datenbank aus
USE pflanzen; Wählt zu bearbeitende Datenbank, alle folgenden Befehle beziehen sich nun auf die Datenbank 'pflanzen'

Tabellenbefehle

erste Tabelle erstellen:
Zuerst werden die Spalten (Kollonen oder Felder) benannt und deren Eigenschaften angegeben (alles in einer Linie bis zur ENTER-Taste). Erst danach (weiter unten) wird die Tabelle mit Datensätzen (Zeilen oder Linien) gefüllt.
CREATE TABLE blumen
Erstellt eine neue Tabelle namens 'blumen'
(id INTEGER AUTO_INCREMENT, Die erste Spalte heist 'id' sie beinhaltet nur Zahlen der Wert steigt automatisch um 1 an
name VARCHAR (60), die zweite Spalte heist 'name' beinhaltet 'variable Charakter' also Buchstaben und Zahlen mit maximal 60 Zeichen
standort VARCHAR (20), die dritte Spalte heist 'standort', Inhalt wie oben aber nur 20 Zeichen sind erlaubt
farbe INTEGER, die vierte Spalte heist 'farbe', Inhalt nur Zahlen - in dieser Spalte wird lediglich die Kennnummer des Datensatzes mit der Farbangabe aus einer zweiten Tabelle stehen
PRIMARY KEY (id)); legt die Spalte 'id' als den Primary Key dieser Tabelle fest. Klammern für Spalten und letzter Option werden geschlossen und mit Semikolon wird der Befehl Abgeschlossen.
Enter-Taste Mit der Enter-Taste wird der Befehl auf die Reise geschickt, bei erfolgreicher Ausführung antwortet die Konsole mit 'Query OK'
Die Tabelle 'blumen':

(Tabelle füllen siehe weiter unten)
Das Beispiel zeigt, wie an Stelle von 'rot' bloss der entsprechende PRIMARY KEY aus der zweiten Tabelle 'farbe' eingetragen wird.
id name
(60zeichen)
standort
(20zeichen)
farbe
(Zahl)
1 Rose sonnig 103
2 Veilchen schattig 104
3 Tulpe halbschatten 103
4 Orchidee feucht 100
Die zweite Tabelle 'farbe' würde den anzusprechenden Schlüssel und die entsprechende Farbangabe bereit halten. Eigentlich müsste diese zweite Tabelle vor der ersten erstellt werden, damit der für 'rot' entsprechende Schlüssel vorhanden ist.
id farbe
(60zeichen)
100 weiss
101 gelb
102 orange
103 rot
104 violett
105 blau
106 grün
EXPLAIN blumen Tabelle 'blumen' wird dargestellt (siehe weiter unten)
DROP TABLE blumen Tabelle 'blumen' wird unwiederruflich gelöscht
weitere Datentypen (nebst VARCHAR und INTEGER)
TEXT Text-Inhalte max. 65535 Byte
BLOB Bilder oder Sounds max. 65535 Byte
DATETIME YYYY-MM-DD/HH:MM:SS
(Dies ist eine unvollständige Liste.)
weitere Optionen (nebst AUTO_INCREMENT und PRIMARY KEY)
UNIQUE Jeder Wert muss einmalig sein
DEFAULT Standart Wert
BINARY Daten werden binär gespeichert
(Dies ist eine unvollständige Liste.)
Spalten verändern
ALTER TABLE blumen
ADD bluetezeit VARCHAR (40);
Struktur der Tabelle 'blumen' wird verändert
hinzufügen der Spalte 'bluetezeit' (40 Zeichen sind möglich)
ALTER TABLE blumen
DROP standort;
die Spalte 'standort' wird gelöscht
ALTER TABLE blumen
DROP PRIMARY KEY;
löscht den Primary Key (nicht die Spalte)
ALTER TABLE blumen
ADD PRIMARY KEY (id);
legt die Spalte 'id' als den Primary Key fest
ALTER TABLE blumen
CHANGE standort klima INTEGER;
ändert den Spaltennamen von 'standort' zu 'klima' und die Spaltendefinition (von varchar) zu integer
ALTER TABLE blumen
MODIFY klima VARCHAR (20)
ändert nur die Definition des Tateityps der Spalte 'klima' (nicht den Namen) von 'integer' zu 'varchar'
Datensätze in Tabellen füllen, löschen, verändern
INSERT INTO blumen
(name, klima, farbe)
VALUES
('Rose', 'sonnig', 101),
('Umbra Veilchen', 'schattig', 102),
('Tulpe', 'halbschatten', 101),
('Orchidee', 'feucht', 103);
Die 'id' braucht nicht eingetragen zu werden, denn die wächst so wie sie oben angelegt wurde automatisch.
Achtung - der Befehl wird nach dem ersten Datensatz nicht durch ein ; beendet sondern nur durch ein , abgeteilt und die weiteren Datensätze folgen sogleich!
Zeichenketten (Strings) werden in einfache Anführungszeichen gesetzt: z.B.: 'Umbra Veilchen'.
DELETE FROM blumen; alle Datensätze der Tabelle 'blumen' löschen
DELETE FROM blumen
WHERE name = 'Rose';
den ganzen Datensatz löschen, in welchem in der Spalte 'name' 'Rose' steht
Auch bei Bedingungen wird der String in Anführungszeichen gesetzt.
UPDATE blumen
SET name = 'Tiger Orchidee',
klima = 'hohe Luftfeuchtigkeit'
WHERE name = 'Orchidee';
in der Tabelle 'blumen' setze in die Spalte 'name' 'Tiger Orchidee' und in die Spalte 'klima' 'hohe Luftfeuchtigkeit' in den Datensatz in dem in der Spalte 'name' jetzt noch 'Orchidee' steht
Achtung - ohne WHERE würde in allen Datensätzen die Spalten 'name' und 'klima' ersetzt!
Tabellen exportieren
SELECT * FROM blumen
INTO OUTFILE '/blumen.txt';
Zum erstellen einer Sicherungskopie kann die Tabelle als .txt - Datei gespeichert werden.
Der Stern * steht für alles und meint alle Datensätze aus allen Spalten.
Der Slash speichert die Datei in das gleiche Verzeichnis in dem MySQL installiert ist.
Also in etwa: WÄHLE alles VON der Tabelle 'blumen' und schreibe es IN EIN SEPERATES text-FILE in das Wurzelverzeichnis unter dem Namen blumen.txt
Standartmässig werden die Felder (Spalten) durch Tabulatoren \t getrennt und die Datensätze (Zeilen) durch ein \r\n
SELECT * FROM blumen
INTO OUTFILE '/blumen.csv'
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
Eine Excel-kompatible-Datei wird geschrieben, csv heisst comma separted values. Diese trennt die Felder durch Komma , die Zeilen auch durch \r\n.
Tabellen importieren
LOAD DATA INFILE 'dateipfadname'
INTO TABLE tabellenname
IMPORTOPTIONEN
INFILE meint die Datei in welcher die zu importierenden Daten sich befinden. Zu beachten: der 'dateipfadname' steht in einfachen Anführungszeichen.
LOAD DATA INFILE
'd:\\pflanzen_site\\blumen.txt'
INTO TABLE blumen
auf der Windows-Festplatte wird mit \ gearbeitet, da der Backslash unter MySQL als Einleitung für spezielle Steuerzeichen verwendet wird, muss er doppelt verwendet werden, der erste verpufft. Die Datei 'blumen.txt' befände sich in einem Ordner 'planzen_site' auf dem Laufwerk 'd'.
LOAD DATA INFILE '/blumen.txt'
INTO TABLE blumen
unter UNIX/Linux Rechnern kann der normale, einfache / slash benutzt werden (um die oben angelegte Sicherungsdatei zu laden).
LOAD DATA INFILE
'/blumen.csv'
INTO TABLE blumen
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
Damit eine Excel-kompatible Datei verstanden werden kann, muss deren Trennregeln als Importoption hinzugefügt werden (siehe Tabelle exportieren).
Uff, das wars vorläuffig.

Datenbank-Tool 'php MyAdmin'

MySQL-Datenbank administrier-Tool

Wer nicht zum Hardcore Crack berufen ist, der installiert ein Programm mit einer Browser Benutzeroberfläche (ersetzt die Konsole), das auf der Scriptsprache PHP basierend die Erstellung und die Administration von MySQL Datenbanken und deren Tabellen vereinfacht. PhpMyAdmin ist ein solches.

Hat man MySQL mit einem Benutzernamen und Passwort geschützt muss im Ordner phpmyadmin die Datei 'config.inc.php' mit einem Texteditor geändert werden:
$cfg['Servers'][$i]['user'] = 'root'; //Benutzername
$cfg['Servers'][$i]['password'] = 'sagichnicht'; //Passwort

Datenbank und Tabellen anlegen oder öffnen

Die Datei 'index.php' im Verzeichnis 'phpmyadmin' des Apache Servers (mein Pfad im Xampp-Packet von Apache-Friends ist: http://localhost/phpmyadmin/ ) im Browser öffnet die Startseite. Zuerst muss (links) eine bestehende Datenbank aus dem Dropdownmenu ausgewählt werden (ich hatte ja mit der SQL-Konsole schon eine namens 'pflanzen' angelegt, welche dort tatsächlich zu finden war), oder es muss (unten) eine neue Datenbank angelegt werden (dazu ist vorerst nur der Name der Datenbank nötig). Schon lande ich auf einer etwas verwirrenden Seite (mit einer Tabelle voller Icons); dies ist die Datenbank-Seite. Dort kann ich die Datenbank ändern oder jetzt entweder (links) eine bestehende Tabelle auswählen oder (unten) eine neue Tabelle in der Datenbank erstellen (dazu muss ich nur den Tabellennamen eingeben und die Anzahl gewünschter Spalten). Ich öffnete die Tabelle 'blumen' und lande auf einer änlichen Seite; dies ist die Tabellen-Seite welche die Struktur der Tabelle anzeigt, welche ich hier auch verändern kann, z.B. Spaltennamen oder Datentypen etc.

Tabelle füllen mit php MyAdmin

Auf den 5. Reiter 'Einfügen' klicken und eine Formularseite öffnet sich, dort kann Datensatz um Datensatz in die Tabelle eingefügt werden.
Zurück gekehrt zeigt der 2. Reiter 'Anzeigen' jetzt anklickbar die Tabelle und auch grad noch die SQL-Befehle an. (Abbildung unten)

Tabelle 'blumen' in phpMyAdmin

Exceltabelle importieren

Tabellen können in Excel einfach erstellt werden und als csv Dateien abgelegt werden.

Tabelle 'rosen.csv' im Excel

CSV 'comma separted values' sind Dateien in der die Datensätze beispielsweise als eigene Zeilen und die Feld-Werte durch Semikolon, Tabs oder Kommas etc. getrennt werden. Eine csv-Datei in Exel (oben) - mit Editor (unten) geöffnet.

Tabelle 'rosen.csv' im Editor

Ganz unten in der 'Struktur'-Seite von PHP MyAdmin befindet sich ein Link 'Textdatei in Tabelle einfügen'; ein paar Einstellungen sind dort vorzunehmen: Der Pfad zur Importierten Datei, ob etwas in der bestehenden Datei durch die importierte überschrieben werden soll, wie dort getrennt wurde, und die 'LOAD-Methode' - falls sich jene Datei nicht auf dieser Partition der Festplatte befindet: 'Data'. 'Abschicken' und schwuppdiwupp (geht wirklich einfach) ist meine Tabelle fertig.

Wo sind sie nun?

Die Datenbanken werden unter Xamp von phpMyAdmin wie von MySQL in einem automatisch erstellten Ordner abgelegt:

Datenbank mit Windows Explorer gefunden

Datenbank transferieren

Die Datenbank erneut erstellen

Auf den externen Server, zum Host, ist eine Datenbank nicht als Ganzes transferierbar; sie muss dort neu erstellt und kann dann administriert werden! Die Datenbank erhällt dabei mehr oder weniger automatisch einen Namen: 'biefer_pflanzen', einen Pfad: 'localhost', einen Benutzernamen: 'biefer_root' und ein Passwort: 'sagichnicht', (wobei letzteres sowie jeweils das nach dem _ also 'pflanzen' und 'root' wählbar waren).

Die Tabellen exportieren und importieren

Die Tabellen, sind sie denn schon auf einer Festplatte vorhanden, können hingegen durch php myAdmin exportiert und auf den Server importiert werden.

Daten abfragen und ausgeben, verändern oder löschen

Wo sich Spalten mit Zeilen kreuzen befinden sich Werte in Zellen.

Die ganze Fülle der Datenbank will niemand gleichzeitig sehen. Lieber will jemand eine für ihn speziel zusammengestellte Auswahl einzelner Inhalte einsehen.
Das Abfragen, Erweitern oder Verändern der Datenbank kann auch über Benutzereingaben in Formularen geschehen.

Die Datenbank (und der Datenbank-Server) kann über 'PHP'-Scripts angesprochen werden (Andere Scriptsprachen sind: 'Perl', 'ASP', 'JSP'). PHP verfügt über eine reichhaltige Sammlung von mySQL Funktionen.

Das Abfrageschema

Eine mySQL Datenbank wird immer im selben Schema angesprochen.

In der folgenden Anleitung in 5 Schritten hat es Links zu praktischen Beispielen zum Abfragen, Verändern und Ausgeben von Werten aus Datenbank-Tabellen.

  1. Verbindung herstellen zum Datenbankserver mit Servername, Benutzername (unterschiedliche Rechte) und Passwort. Dort die gewünschte
    Datenbank öffnen.
    db_connect.php
  2. Anfrage formulieren (was und wo)
    Auswahl von Tabelle, Spalten und Zeilen treffen.
    Zum Auslesen und Anzeigen: Eingrenzung der gesuchten Werte mittels SELECT und WHERE LIKE ORDER BY und LIMIT etc.
    db_select.php
    Zum Einfügen/Ändern/Löschen: Spezifizieren mittels INSERT INTO oder UPDATE SET oder DELETE FROM mit WHERE etc.
    db_erweitern.php
    db_update.php
    db_delete.php
  3. Anfrage senden (Query) an die Datenbank mittels msql_query().
    db_fetch.php
  4. Resultat erzeugen, ein Objekt oder einen Array aus der Abfrage mittels den Befehlen mysql_result(), mysql_fetch_row(), mysql_fetch_object() oder mysql_fetch_array(). Das Resultat (den Array oder das Objekt) mittels Schlaufe durchlaufen und
    Werte ausgeben.
  5. Resultat freigeben, Daten aus dem Zwischenspeicher löschen mittels mysql_free_result().
    Verbindung trennen von der Datenbank mittels mysql_close().


Valid XHTML 1.0 Check den Code.

Intro: >> <<
Ich bin hier: > PHP Lehrling >> MySQL:
 
HTML · CSS · JavaScript · PHP und MySQL · Andere
Letzter Update: 26.10.2016