Assurez-vous d'être connecté au serveur, comme expliqué
précédemment dans cette section. Faire ceci ne sélectionnera
pas une base par lui même, mais c'est normal. A ce stade, il est
important de découvrir la fa¸on dont sont publiées les
requêtes, pour ensuite pouvoir créer des tables, y insérer et
rechercher des données. Cette section décrit les principes de
base pour entrer une commande, en utilisant plusieurs requêtes
que vous pouvez essayer pour vous familiariser avec la fa¸on dont
mysql
fonctionne.
Voilà une commande simple qui demande au serveur de vous donner
son numéro de version et la date courante. Entrez-la comme suit,
juste après l'invite mysql>
puis pressez
Enter :
mysql>SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+ | VERSION() | CURRENT_DATE | +--------------+--------------+ | 3.22.20a-log | 1999-03-19 | +--------------+--------------+ 1 row in set (0.01 sec) mysql>
La requête révèle plusieurs choses à propos de
mysql
:
Une commande consiste normalement en une commande SQL suivie
d'un point-virgule. (Il y a quelques cas ou le point-virgule
n'est pas requis. QUIT
, mentionnée plus
tôt, en fait partie. Nous verrons les autres plus tard.)
Lorsque vous entrez une commande, mysql
l'envoi au serveur pour l'exécution et affiche le résultat,
puis affiche un autre mysql>
pour
indiquer qu'il attend une autre commande.
mysql
affiche le résultat des requêtes
dans une table (lignes et colonnes). La première ligne
contient le nom des colonnes. Les lignes suivantes constituent
le résultat de la requête. Normalement, les titres des
colonnes sont les noms des champs des tables de la base de
données que vous avez récupérés. Si vous récupérez la
valeur d'une expression au lieu d'une colonne (comme dans
l'exemple précédent), mysql
nomme la
colonne en utilisant l'expression elle-même.
mysql
vous indique combien de lignes ont
été retournées et combien de temps d'exécution la requête
a pris, ce qui vous donnera une approximation des performances
du serveur. Ces valeurs sont imprécises car elles
représentent le temps logiciel (et non le temps processeur ou
matériel), et qu'elles sont affectées par des facteurs tels
que la charge du serveur ou l'accessibilité du réseau. (Dans
un soucis de brièveté, la ligne contenant ``rows in
set
'' n'est plus montrée dans les exemples suivants
de ce chapitre.)
Les mots-clef peuvent être entrés sous n'importe quelle forme de casse. Les requêtes suivantes sont équivalentes :
mysql>SELECT VERSION(), CURRENT_DATE;
mysql>select version(), current_date;
mysql>SeLeCt vErSiOn(), current_DATE;
Voilà une autre requête. Elle montre que vous pouvez utiliser
mysql
en tant que simple calculatrice :
mysql> SELECT SIN(PI()/4), (4+1)*5;
+-------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+-------------+---------+
| 0.707107 | 25 |
+-------------+---------+
Les commandes vues jusqu'à présent ont été relativement courtes, et tenaient sur une seule ligne. Vous pouvez même entrer plusieurs requêtes sur une seule ligne. Il suffit de terminer chacune d'elle par un point-virgule :
mysql> SELECT VERSION(); SELECT NOW();
+--------------+
| VERSION() |
+--------------+
| 3.22.20a-log |
+--------------+
+---------------------+
| NOW() |
+---------------------+
| 1999-03-19 00:15:33 |
+---------------------+
Une commande ne doit pas être obligatoirement sur une seule
ligne ; les commandes qui exigent plusieurs lignes ne sont pas un
problème. mysql
détermine où se situe la fin
de votre commande en recherchant le point-virgule de terminaison,
et pas l'extrémité de la commande entrée. (Dans d'autres
termes, mysql
accepte des formats libres
d'entrée : il collecte les lignes entrées mais ne les exécute
qu'une fois le point-virgule trouvé.)
Voilà une seule requête sur plusieurs lignes :
mysql>SELECT
->USER()
->,
->CURRENT_DATE;
+--------------------+--------------+ | USER() | CURRENT_DATE | +--------------------+--------------+ | joesmith@localhost | 1999-03-18 | +--------------------+--------------+
Dans cet exemple, notez comment l'invite change de
mysql>
à ->
après
avoir entré la première ligne d'une requête multi-lignes. C'est
la fa¸on dont mysql
indique qu'il n'a pas vu
de requête complète et qu'il attend la fin de celle-ci. L'invite
est votre ami en vous fournissant la rétroactivité. Si vous
utilisez cette rétroactivité, vous vous rendrez toujours compte
de ce que mysql
attend.
Si vous décidez d'annuler une commande que vous êtes en train de
taper, faites-le en entrant \c
:
mysql>SELECT
->USER()
->\c
mysql>
Ici aussi, portez votre attention sur l'invite. Elle se transforme
à nouveau en mysql>
après que vous ayez
entré \c
, vous informant que
mysql
est prêt pour une nouvelle requête.
Le tableau suivant montre les différentes invites que vous
pourrez voir et résume leur signification quand à l'état dans
lequel se trouve mysql
:
Invite | Signification |
mysql> |
Prêt pour une nouvelle commande. |
-> |
En attente de la ou des lignes terminant la commande. |
'> |
En attente de la prochaine ligne collectant une chaîne commencée par
un guillemet simple (‘' ’). |
"> |
En attente de la prochaine ligne collectant une chaîne commencée par
un guillemet double (‘" ’). |
`> |
En attente de la prochaine ligne collectant une chaîne commencée par
un guillemet oblique (‘` ’). |
Les commandes sur plusieurs lignes sont la plupart du temps des
accidents, lorsque vous voulez faire une commande sur une seule
ligne et que vous oubliez le point-virgule de fin. Dans ce cas,
mysql
attend la suite de votre saisie :
mysql>SELECT USER()
->
Si cela vous arrive (vous pensez que votre requête est complète
mais la seule réponse est l'invite ->
), il
est fort probable que mysql
attende le
point-virgule. Si vous ne notez pas ce que l'invite vous indique,
vous pourriez patienter pendant longtemps avant de réaliser ce
que vous devez faire. Entrez un point-virgule pour compléter la
requête, et mysql
devrait l'exécuter :
mysql>SELECT USER()
->;
+--------------------+ | USER() | +--------------------+ | joesmith@localhost | +--------------------+
L'invite '>
ainsi que
">
apparaissent durant l'entrée de chaîne.
Dans MySQL, vous pouvez écrire une chaîne entourée du
caractère ‘'
’ ou bien
‘"
’ (par exemple,
'Bonjour'
or "Au Revoir"
),
et mysql
vous laisse entrer une chaîne qui
peut être sur plusieurs lignes. Lorsque vous voyez une invite
comme '>
ou ">
, cela
signifie que vous avez entré une ligne contenant le caractère
‘'
’ ou
‘"
’, mais vous n'avez pas encore
entré le caractère correspondant qui termine votre chaîne.
C'est pratique si vous entrez réellement une chaîne à lignes
multiples, mais est-ce probable ? Pas vraiment. Plus souvent, les
invites '>
et ">
indiquent que vous avez, par inadvertance, oublié un caractère
de fermeture. Par exemple :
mysql>SELECT * FROM ma_table WHERE nom = "Smith AND age < 30;
">
Si vous entrez cette requête SELECT
, puis
appuyez sur Enter et attendez le résultat, rien ne se passera. Au
lieu de vous demander pourquoi la requête met si longtemps à
s'exécuter, remarquez que l'invite de commande s'est transformée
en ">
. Cela indique que
mysql
attend de voir la fin d'une chaîne de
caractères non-terminée. (Voyez-vous l'erreur dans cette
requête ? Il manque le second guillemet à la suite de
"Smith
.)
Que faire ? Le plus simple est d'annuler la commande. Toutefois,
vous ne pouvez vous contenter de taper \c
dans
ce cas-là, car mysql
l'interprète comme une
partie de la chaîne qu'il est en train de collecter ! A la
place, entrez le second guillemet (pour que
mysql
sache que vous avez fini la chaîne),
puis entrez \c
:
mysql>SELECT * FROM my_table WHERE name = "Smith AND age < 30;
">"\c
mysql>
L'invite se change à nouveau en mysql>
,
indiquant que mysql
est prêt pour une nouvelle
requête.
Il est important de savoir ce que les invites
'>
et ">
signifient,
car si vous avez entré par erreur une chaîne non terminée,
toutes les lignes suivantes que vous entrerez seront ignorées par
mysql
, même une ligne contenant
QUIT
! Cela peut prêter à confusion,
spécialement si vous ne savez pas que vous devez fournir le
guillemet fermant avant de pouvoir annuler la commande courante.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.