Stellen Sie zunächst wie im vorhergehenden Abschnitt beschrieben eine Verbindung zum Server her. Durch diesen Vorgang wird noch keine Datenbank ausgewählt, was aber noch nicht problematisch ist. Wir wollen erst einmal sehen, wie man Abfragen absetzt, statt gleich mit den eigentlichen Datenbankfunktionen – dem Erstellen von Tabellen und dem Einladen von Daten in bzw. Abrufen dieser Daten aus den Tabellen – anzufangen. Dieser Abschnitt erläutert die Grundprinzipien der Befehlseingabe mithilfe verschiedener Abfragen, die Sie ausprobieren können, um sich mit der Funktionsweise von mysql vertraut zu machen.
      Hier zunächst ein einfacher Befehl, der den Server bittet, seine
      Versionsnummer und das aktuelle Datum anzugeben. Geben Sie den
      Befehl wie hier gezeigt an der Eingabeaufforderung
      mysql> ein und betätigen Sie dann die
      Eingabetaste:
    
mysql> SELECT VERSION(), CURRENT_DATE;
+-----------------+--------------+
| VERSION()       | CURRENT_DATE |
+-----------------+--------------+
| 5.1.2-alpha-log | 2005-10-11   |
+-----------------+--------------+
1 row in set (0.01 sec)
mysql>
Diese Abfrage veranschaulicht mehrere Aspekte von mysql:
          Ein Befehl besteht normalerweise aus einer SQL-Anweisung
          gefolgt von einem Semikolon. (Es gibt eine Reihe von
          Ausnahmen, bei denen das Semikolon weggelassen werden kann.
          Ein Beispiel ist das bereits weiter oben erwähnte
          QUIT; weitere werden folgen.)
        
          Wenn Sie einen Befehl absetzen, sendet
          mysql ihn zur Ausführung an den Server und
          zeigt die Ergebnisse an. Darauf folgt wieder eine neue
          Eingabeaufforderung mysql>, mit der
          angezeigt wird, dass nun ein neuer Befehl eingegeben werden
          kann.
        
mysql zeigt die Abfrageausgabe in Tabellenform (d. h. als Zeilen und Spalten) an. Die erste Zeile enthält die Spaltenüberschriften. Alle nachfolgenden Zeilen sind Abfrageergebnisse. Normalerweise sind Spaltenüberschriften die Namen der Spalten, die aus den Datenbanktabellen abgerufen werden. Wenn Sie den Wert eines Ausdrucks statt einer Tabellenspalte (wie im obigen Beispiel) abrufen, beschriftet mysql die Spalte mit dem Ausdruck selbst.
mysql zeigt an, wie viele Datensätze (Zeilen) zurückgegeben wurden und wie lange die Ausführung der Abfrage dauerte; hierdurch können Sie grob auf die Serverleistung schließen. Die Werte sind allerdings nicht sehr genau, denn sie geben nur eine normale Zeit statt der Prozessor- oder Systemzeit an, die zudem durch Faktoren wie der Serverauslastung und der Netzwerklatenz beeinflusst wird. (Aus Gründen der Übersichtlichkeit haben wir die Zeile „rows in set“ in einigen der in diesem Kapitel aufgeführten Beispiele weggelassen.)
Schlüsselwörter können in beliebiger Groß-/Kleinschreibung angegeben werden. Die folgenden Abfragen sind gleichwertig:
mysql>SELECT VERSION(), CURRENT_DATE;mysql>select version(), current_datum;mysql>SeLeCt vErSiOn(), current_DATE;
Es folgt eine weitere Abfrage. Sie veranschaulicht, wie man mysql als einfachen Taschenrechner verwenden kann:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+------------------+---------+
| SIN(PI()/4)      | (4+1)*5 |
+------------------+---------+
| 0.70710678118655 |      25 |
+------------------+---------+
1 row in set (0.02 sec)
Die bislang gezeigten Abfragen waren vergleichsweise kurze, einzeilige Anweisungen. Sie können aber auch mehrere Anweisungen in eine Zeile schreiben. Schließen Sie sie jeweils mit einem Semikolon ab:
mysql> SELECT VERSION(); SELECT NOW();
+-----------------+
| VERSION()       |
+-----------------+
| 5.1.2-alpha-log |
+-----------------+
1 row in set (0.00 sec)
+---------------------+
| NOW()               |
+---------------------+
| 2005-10-11 15:15:00 |
+---------------------+
1 row in set (0.00 sec)
Ein Befehl muss nicht vollständig innerhalb einer einzelnen Zeile angegeben werden; insofern stellen auch längere Befehle über mehrere Zeilen kein Problem dar. mysql ermittelt das Ende Ihrer Anweisung anhand des schließenden Semikolons und nicht auf der Basis der Eingabezeile. (Anders gesagt, akzeptiert mysql frei formatierte Eingaben: Alle Eingabezeilen werden gesammelt, die Ausführung erfolgt aber erst, nachdem das Semikolon erkannt wurde.)
Hier ist eine einfache mehrzeilige Anweisung:
mysql>SELECT->USER()->,->CURRENT_DATE;+---------------+--------------+ | USER() | CURRENT_DATE | +---------------+--------------+ | jon@localhost | 2005-10-11 | +---------------+--------------+
      Beachten Sie in diesem Beispiel, wie die Eingabeaufforderung von
      mysql> auf ->
      umschaltet, nachdem Sie die erste Zeile einer mehrzeiligen Abfrage
      eingegeben haben. Auf diese Weise zeigt mysql
      an, dass noch keine vollständige Anweisung erkannt wurde und
      weitere Eingaben erwartet werden. Diese Form der
      Eingabeaufforderung ist sehr praktisch, denn sie erlaubt
      Rückschlüsse auf erforderliche Eingaben. Sie wissen also immer,
      worauf mysql gerade wartet.
    
      Wenn Sie einen Befehl, den Sie gerade eingeben, doch nicht
      ausführen wollen, können Sie ihn durch Eingabe von
      \c abbrechen:
    
mysql>SELECT->USER()->\cmysql>
      Beachten Sie auch hier die Eingabeaufforderung. Sie schaltet
      zurück auf mysql>, nachdem Sie
      \c eingegeben haben. So wird angezeigt, dass
      mysql auf einen neuen Befehl wartet.
    
Die folgende Tabelle zeigt alle Eingabeaufforderungen, auf die Sie treffen können, und fasst ferner zusammen, welche Rückschlüsse sie jeweils bezüglich des Zustandes von mysql erlauben.
| Eingabeaufforderung | Bedeutung | 
| mysql> | Bereit für einen neuen Befehl. | 
| -> | Erwartet die nächste Zeile einer mehrzeiligen Befehlseingabe. | 
| '> | Erwartet die nächste Zeile und die Vervollständigung eines Strings,
              der mit einem einfachen Anführungszeichen
              (‘ '’) begonnen wurde. | 
| "> | Erwartet die nächste Zeile und die Vervollständigung eines Strings,
              der mit einem doppelten Anführungszeichen
              (‘ "’) begonnen wurde. | 
| `> | Erwartet die nächste Zeile und die Vervollständigung eines
              Bezeichners, der mit einem Backtick
              (‘ `’) begonnen wurde. | 
| /*> | Erwartet die nächste Zeile und die Vervollständigung eines Kommentars,
              der mit /*begonnen wurde. | 
Mehrzeilige Anweisungen treten häufig ungewollt auf, wenn Sie eigentlich nur einen einzeiligen Befehl absetzen wollen, aber das abschließende Semikolon vergessen. In diesem Fall erwartet mysql eine weitere Eingabe:
mysql> SELECT USER()
    ->
      Wenn das geschieht (d. h., wenn Sie glauben, dass Sie einen
      vollständigen Befehl eingegeben haben, aber die
      Eingabeaufforderung -> erscheint), dann
      wartet mysql in aller Regel auf das Semikolon.
      Bemerken Sie nicht sofort, welche Eingabeaufforderung hier
      angezeigt wird, dann sitzen Sie womöglich eine Zeit lang vor dem
      Computer, bevor Sie feststellen, was passiert ist. Geben Sie
      einfach ein Semikolon ein, um die Anweisung abzuschließen – sie
      wird dann von mysql ausgeführt:
    
mysql>SELECT USER()->;+---------------+ | USER() | +---------------+ | jon@localhost | +---------------+
      Die Eingabeaufforderungen '> und
      "> erscheinen bei der Erfassung von Strings
      (MySQL erwartet also die Vervollständigung eines Strings). In
      MySQL können Sie Strings entweder in
      ‘'’ oder
      ‘"’ setzen (z. B.
      'hello' oder "goodbye").
      mysql erlaubt die Eingabe von Strings, die sich
      über mehrere Zeilen erstrecken. Wenn Sie die Eingabeaufforderung
      '> oder "> sehen,
      bedeutet dies, dass Sie eine Zeile mit einem String eingegeben
      haben, der mit dem Anführungszeichen
      ‘'’ oder
      ‘"’ beginnt, diesen String aber
      noch nicht mit dem zugehörigen schließenden Anführungszeichen
      beendet haben. Hierdurch ist häufig erkennbar, dass Sie ein
      Anführungszeichen einzugeben vergessen haben. Ein Beispiel:
    
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '>
      Wenn Sie diese SELECT-Anweisung eingeben und
      dann die Eingabetaste betätigen, werden Sie eine Zeit lang
      warten, ohne dass etwas passiert. Wenn Sie sich wundern, warum die
      Verarbeitung der Abfrage so lange dauert, werden Sie bald
      feststellen, dass die Eingabeaufforderung '>
      angezeigt wird. Sie besagt, dass mysql den Rest
      eines nicht abgeschlossenen Strings erwartet. (Erkennen Sie den
      Fehler in der Anweisung? Beim String 'Smith
      fehlt das zweite einzelne Anführungszeichen.)
    
      Was können Sie nun tun? Die einfachste Möglichkeit besteht
      darin, den Befehl abzubrechen. Sie können in diesem Fall aber
      nicht einfach \c eingeben, da
      mysql dies als Teil des Strings interpretieren
      würde, den Sie vermeintlich eingeben. Geben Sie stattdessen
      zuerst das schließende Anführungszeichen (damit
      mysql weiß, dass der String abgeschlossen ist)
      und erst dann \c ein:
    
mysql>SELECT * FROM my_table WHERE name = 'Smith AND age < 30;'>'\cmysql>
      Die Eingabeaufforderung schaltet nun auf
      mysql> zurück und zeigt so an, dass
      mysql für einen neuen Befehl bereit ist.
    
      Die Eingabeaufforderung `> ähnelt
      '> und ">, gibt aber
      an, dass Sie mit einem Backtick einen Bezeichner begonnen, aber
      noch nicht beendet haben.
    
      Zu wissen, was die Eingabeaufforderungen '>,
      "> und `> bedeuten,
      ist wichtig, denn wenn Sie versehentlich einen nicht
      abgeschlossenen String eingeben, werden alle nachfolgend
      eingegebenen Zeilen von mysql ignoriert –
      einschließlich der Zeile mit dem Befehl QUIT.
      Dies kann insbesondere dann recht verwirrend sein, wenn Sie nicht
      wissen, dass Sie ein schließendes Anführungszeichen eingeben
      müssen, bevor Sie den aktuellen Befehl abbrechen können.
    
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.

