Ein DBS kann auf drei Arten gesteuert werden: Entweder dialogorientiert, im Batch-Betrieb oder durch andere Programme. Dialogorientiert bedeutet, daß man am Bildschirm seine Befehle eingibt und innerhalb von Sekunden das Ergebnis oder die Fehlermeldung erhält. Das ganze ist vergleichbar mit der Konsole beim Betriebssystem. In beiden Fällen gibt es einen Prompt, an dem man seine Befehle eingibt und im selben Fenster erscheint dann die Ausgabe.
Über den MySQL-Prompt hat man natürlich die meisten Möglichkeiten, weil man jeden Befehl verwenden kann. Häufig ist aber auch ein wenig Unterstützung durch ein Programm praktisch, das z.B. die Tabellenstruktur anzeigt oder beim Ändern die alten Werte als Vorbelegung nimmt etc. Ein sehr schönes Programm dazu ist PHPMyAdmin, mehr dazu im Kapitel 7.3.
In diesem Kapitel werden wir dialogorientiert arbeiten. Alle Befehle, die hier direkt eingegeben werden, können aber auch in eine Text-Datei geschrieben werden, die dann ,, dialogorientiert`` abgearbeitet wird. Das nennt man dann Batch-Betrieb. Sehr empfehlenswert ist dies z.B. für die Erstellung von Tabellen. Dann kann man nämlich ohne großen Aufwand dieselbe Tabellenstruktur in verschiedenen DBs verwenden.
Bei der Benutzung durch andere Programme merkt der Benutzer nicht, daß eine oder welche Datenbank im Hintergrund arbeitet. So benutzen z.B. alle Suchmaschinen im Internet (Google, AltaVista, Yahoo) in irgendeiner Form eine Datenbank, um die Informationen zu speichern. Als normaler Nutzer sieht man aber nur die Suchmaske und bekommt dann die Ergebnisse schön formatiert angezeigt. Es muß dann ein Programm geben, das die eingegebene Anfrage an die Datenbank weiterreicht und dann die Ergebnisse formatiert ausgibt.
Dieses Programm kann im Prinzip in jeder beliebigen Sprache geschrieben werden. Häufig wird dafür PHP verwendet, was weiter unten noch beschrieben wird.
mysql -p<Paßwort> -u <Benutzername> <DB-Name>Für Paßwort, Benutzername und DB-Name sind natürlich die entsprechenden Werte einzutragen (ohne die spitzen Klammern!). Diese bekommst du vom Provider, der dir die Datenbank zur Verfügung stellt, bzw., im Falle einer eigenen DB, gibst du dir selbst die Daten. ;-)
Alternativ kannst du auch dein Paßwort abfragen lassen:
mysql -u <Benutzername> -p <DB-Name> Enter password: ********
Wie du siehst, wird in diesem Fall das Paßwort explizit abgefragt. Diese Methode ist der Möglichkeit, das Paßwort hinter -p anzugeben, aus zwei Gründen vorzuziehen: Zum einen erscheint dann das Paßwort weder (unter Unix/Linux) in der .bash_history noch im Klartext auf dem Bildschirm und zum anderen hat man dann auch nicht das Problem, darauf achten zu müssen, daß zwischen -p und dem Paßwort kein Leerzeichen stehen darf, weil nach einem solchen je nach Reihenfolge der Parameter der Datenbankname erwartet wird ...
Wenn du keinen DB-Namen angibst, bekommst du zwar auch den mysql-Prompt, kannst dann aber einige Befehle nicht nutzen, weil du mit keiner Datenbank verbunden wirst. Dann mußt du noch mit Hilfe von USE <DB-Name> die Datenbank angeben.
Wir beim Jugendnetz richten immer zwei Accounts für dieselbe DB ein. Einen, für den sowohl Lese- als auch Schreibzugriffe erlaubt sind, und einen anderen, der nur lesend zugreifen darf. Der nur lesende Account bekommt ein `_ro` an das Ende des Benutzernamens angehängt. Solltest du einen eigenen Server mit MySQL betreiben, solltest du dir auch den Abschnitt 7.2 über MySQL-Nutzer durchlesen.
Wenn das alles geklappt hat, kommt folgende Ausgabe (oder ähnlich):
Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL connection id is 1561 to server version: 3.22.32 Type 'help' for help. mysql>Immer dann, wenn in der letzten Zeile ein mysql> steht, kannst du deine Befehle eingeben. Die Groß-/Kleinschreibung ist bei den Befehlen egal, bei den Tabellen- und Spaltennamen (Attribute) sowie den eigentlichen Werten dagegen natürlich nicht!
mysql -p{Paßwort} -u{Benutzername} {DB-Name} < dateinameAlle (Fehler-)Meldungen, die normalerweise angezeigt werden, werden auf den Bildschirm geschrieben.
SELECT * FROM Mitarbeiter; SELECT * /* Was soll alles ausgewählt werden? */ FROM /* ... und aus welcher Tabelle? */ Mitarbeiter;
Es gibt auch noch # und - - als Kommentarzeichen. Bei diesen wird alles, was hinter dem Zeichen bis zum Zeilenende steht, als Kommentar interpretiert.
SELECT * FROM Mitarbeiter; # Wir wollen alles SELECT * FROM Mitarbeiter; -- Diese Zeile macht dasselbe wie die darüber
# ist kein Kommentarzeichen nach ANSI-Norm, d.h. andere Datenbanken können diese Kommentare nicht erkennen.