mysql sendet jede von Ihnen abgesetzte
SQL-Anweisung zur Ausführung an den Server. Es gibt aber auch
eine Reihe von Befehlen, die mysql selbst
interpretiert. Eine Liste dieser Befehle erhalten Sie, indem
Sie help
oder \h
an der
Eingabeaufforderung mysql>
eingeben:
mysql> help
List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as
new delimiter.
edit (\e) Edit command with $EDITOR.
ego (\G) Send command to mysql server, display result vertically.
exit (\q) Exit mysql. Same as quit.
go (\g) Send command to mysql server.
help (\h) Display this help.
nopager (\n) Disable pager, print to stdout.
notee (\t) Don't write into outfile.
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (\#) Rebuild completion hash.
source (\.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given
outfile.
use (\u) Use another database. Takes database name as argument.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
Für jeden Befehl gibt es eine Lang- und eine Kurzform. Anders als bei der Langform wird die Groß-/Kleinschreibung bei der Kurzform unterschieden. Der Langform eines Befehls kann optional ein Semikolon als Trennzeichen folgen; dieses sollte bei der Kurzform weggelassen werden.
Für den Befehl delimiter
sollten Sie die
Verwendung des Backslashs (‘\
’)
vermeiden, da dieser bei MySQL als Escape-Zeichen dient.
Die Befehle edit, nopager, pager und system funktionieren nur unter Unix.
Der Befehl status
bietet Informationen zur
Verbindung und zum verwendeten Server. Wenn der Client mit
--safe-updates
gestartet wurde, gibt
status
auch die Werte für die
mysql-Variablen aus, die sich auf Ihre
Abfragen auswirken.
Um Abfragen und ihre Ausgaben zu loggen, verwenden Sie den
Befehl tee. Alle auf dem Bildschirm
angezeigten Daten werden an eine angegebene Datei angehängt.
Dies kann auch zu Debugzwecken sehr praktisch sein. Sie
können diese Funktion auf der Befehlszeile mit der Option
--tee
oder interaktiv mit dem Befehl
tee aktivieren. Die Datei
tee kann interaktiv mit dem Befehl
notee deaktiviert werden. Die erneute
Ausführung von tee reaktiviert das Loggen
wieder. Wird kein Parameter angegeben, dann wird die vorherige
Datei verwendet. Beachten Sie, dass tee
Abfrageergebnisse nach jeder Anweisung synchronisiert –
unmittelbar bevor mysql die nächste
Eingabeaufforderung anzeigt.
Mithilfe der Option --pager
können Sie
Abfrageergebnisse im interaktiven Modus mit Unix-Programmen
wie less, more o. Ä.
durchsuchen. Wenn Sie keinen Wert für die Option angeben,
überprüft mysql den Wert der
Umgebungsvariablen PAGER
und setzt den
Pager auf diesen Wert. Interaktiv lässt sich das Paging
mithilfe des Befehls pager aktivieren und
mit nopager deaktivieren. Der Befehl nimmt
ein optionales Argument entgegen; ist es vorhanden, dann wird
das entsprechende Pager-Programm ausgewählt. Ohne
Argumentangabe wird der Pager, der über die Befehlszeile
angegeben wurde, oder stdout
ausgewählt
(sofern überhaupt kein Pager festgelegt wurde).
Die seitenweise Ausgabe funktioniert nur unter Unix, da sie
die Funktion popen()
verwendet, die unter
Windows nicht existiert. Unter Windows kann stattdessen die
Option tee zur Speicherung der
Abfrageausgabe verwendet werden, auch wenn dies in bestimmten
Situationen zum Durchsuchen der Ausgabe nicht so praktisch ist
wie pager.
Es folgen ein paar Tipps zum Befehl pager:
Sie können damit in eine Datei schreiben, und die Ergebnisse landen dann auch nur in dieser Datei:
mysql> pager cat > /tmp/log.txt
Sie können auch Optionen für das Programm übergeben, das Sie als Pager verwenden wollen:
mysql> pager less -n -i -S
Beachten Sie die Option -S
im obigen
Beispiel. Sie kann zum Durchblättern sehr breiter
Abfrageergebnisse recht praktisch sein. Manchmal sind sehr
breite Ergebnismengen auf dem Bildschirm schlecht zu
lesen. Die Option -S
für den Befehl
less kann die Lesbarkeit der Ergebnisse
erheblich steigern, denn sie erlaubt das horizontale
Scrolling mit den Pfeiltasten auf der Computertastatur.
Sie können die Option -S
auch interaktiv
innerhalb von less verwenden, um das
horizontale Scrolling nach Belieben ein- und
auszuschalten. Weitere Informationen finden Sie auf der
Manpage zu less:
shell> man less
Sie können zur Verarbeitung der Ausgabe sehr komplexe Pager-Befehle angeben:
mysql>pager cat | tee /dr1/tmp/res.txt \
| tee /dr2/tmp/res2.txt | less -n -i -S
In diesem Beispiel würde der Befehl die Abfrageergebnisse
an zwei Dateien in zwei verschiedenen Verzeichnissen auf
zwei separaten Dateisystemen senden, die als
/dr1
und /dr2
eingebunden sind. Via less werden die
Ergebnisse aber auch auf dem Bildschirm angezeigt.
Sie können die Funktionen von tee und pager auch kombinieren. Wenn Sie eine tee-Datei aktivieren und pager auf less setzen, können Sie die Ergebnisse mit dem Programm less durchsuchen und gleichzeitig alles an eine Datei anhängen. Der Unterschied zwischen tee unter Unix, wenn es mit dem pager-Befehl verwendet wird, und dem in mysql integrierten tee-Befehl besteht darin, dass das integrierte tee auch dann funktioniert, wenn der Unix-Befehl tee nicht vorhanden ist. Außerdem loggt das integrierte tee alles, was auf dem Bildschirm ausgegeben wird; im Gegensatz dazu wird von dem unter Unix mit pager verwendeten tee nicht so viel protokolliert. Zudem lässt sich das tee-Dateiloggen interaktiv aus mysql heraus ein- und ausschalten. Dies ist nützlich, wenn Sie nur einige, nicht aber alle Abfragen in einer Datei loggen wollen.
Die Standardeingabeaufforderung mysql>
kann umkonfiguriert werden. Der String zur Definition der
Eingabeaufforderung kann die folgenden Spezialsequenzen
enthalten:
Option | Beschreibung |
\v |
Serverversion |
\d |
Standarddatenbank |
\h |
Serverhost |
\p |
aktuelle TCP/IP-Port bzw. aktuelle Socketdatei |
\u |
Ihr Benutzername |
\U |
Ihr vollständiger
-Kontenname |
\\ |
literales ‘\ ’-Backslash-Zeichen |
\n |
Zeilenwechselzeichen |
\t |
Tabulatorzeichen |
\ |
Leerzeichen (folgt dem Backslash) |
\_ |
Leerzeichen |
\R |
aktuelle Uhrzeit im 24-Stunden-Format (0 - 23) |
\r |
aktuelle Uhrzeit im 12-Stunden-Format (1 - 12) |
\m |
Minuten der aktuellen Uhrzeit |
\y |
aktuelles Jahr (zweistellig) |
\Y |
aktuelles Jahr (vierstellig) |
\D |
aktuelles vollständiges Datum |
\s |
Sekunden der aktuellen Uhrzeit |
\w |
aktueller Wochentag, angegeben mit drei Buchstaben („Mon“, „Tue“ usw.) |
\P |
AM/PM |
\o |
aktueller Monat im numerischen Format |
\O |
aktueller Monat, angegeben mit drei Buchstaben („Jan“, „Feb“ usw.) |
\c |
Zähler, der bei jeder von Ihnen abgesetzten Anweisung hochgezählt wird |
\S |
Semikolon |
\' |
einfaches Anführungszeichen |
\" |
doppeltes Anführungszeichen |
‘\
’ gefolgt von einem
beliebigen anderen Buchstaben wird zu genau diesem Buchstaben.
Wenn Sie den Befehl prompt
ohne Argument
eingeben, setzt mysql die
Eingabeaufforderung auf die Standardform
(mysql>
) zurück.
Sie können die Eingabeaufforderung auf verschiedene Weise einstellen:
Sie verwenden eine Umgebungsvariable.
Sie können der Umgebungsvariablen
MYSQL_PS1
als Wert einen
Eingabeaufforderungs-String zuweisen. Zum Beispiel:
shell> export MYSQL_PS1="(\u@\h) [\d]> "
Sie verwenden eine
Befehlszeilenoption. Sie können für
mysql die Option
--prompt
auf der Befehlszeile angeben.
Zum Beispiel:
shell> mysql --prompt="(\u@\h) [\d]> "
(user@host) [database]>
Sie verwenden eine Optionsdatei. Sie
können die Option prompt
im Abschnitt
[mysql]
einer beliebigen
MySQL-Optionsdatei (z. B.
/etc/my.cnf
oder
.my.cnf
) in Ihrem Stammverzeichnis
angeben. Zum Beispiel:
[mysql] prompt=(\\u@\\h) [\\d]>\\_
Beachten Sie in diesem Beispiel die doppelten Backslashs.
Wenn Sie die Eingabeaufforderung mit der Option
prompt
in einer Optionsdatei
einstellen, sollten Sie die Backslashes verdoppeln, wenn
Sie bestimmte Optionen für die Eingabeaufforderung
angeben. Es gibt eine Reihe von Überschneidungen zwischen
den zulässigen Optionen für die Eingabeaufforderung und
den speziellen Escape-Sequenzen, die in Optionsdateien
erkannt werden. (Diese Sequenzen sind in
Abschnitt 4.3.2, „my.cnf-Optionsdateien“, aufgelistet.) Diese
Überschneidungen können bei Verwendung einzelner
Backslashs Probleme verursachen. So wird etwa
\s
als Leerzeichen statt als aktueller
Sekundenwert interpretiert. Das folgende Beispiel zeigt,
wie Sie eine Eingabeaufforderung in einer Optionsdatei so
definieren, dass die aktuelle Uhrzeit im Format
HH:MM:SS>
enthalten ist:
[mysql] prompt="\\r:\\m:\\s> "
Sie stellen die Eingabeaufforderung interaktiv
ein. Sie können Ihre Eingabeaufforderung auch
interaktiv mithilfe des Befehls prompt
(oder \R
) einstellen. Zum Beispiel:
mysql>prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_' (user
@host
) [database
]> (user
@host
) [database
]> prompt Returning to default PROMPT of mysql> mysql>
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.