| 3 Tutoriels d'introduction
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Connexion et déconnexion au serveur
 ->Entrer des requêtes
 . Création et utilisation d'une base de données
 . Obtenir des informations à propos des bases de données et des tables
 . Utilisation de mysql en mode batch
 . Exemples de requêtes usuelles
 . Requêtes du projet Twin
 . Utilisation de MySQL avec Apache
 
 
 | 
  3.2 Entrer des requêtes    
 
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 : La requête révèle plusieurs choses à propos de  
mysql
  :| 
mysql> SELECT VERSION(), CURRENT_DATE;+--------------+--------------+
 | VERSION()    | CURRENT_DATE |
 +--------------+--------------+
 | 3.22.20a-log | 1999-03-19   |
 +--------------+--------------+
 1 row in set (0.01 sec)
 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 :
 Voilà une autre requête. Elle montre que vous pouvez utiliser  
mysql
  
en tant que simple calculatrice :| 
mysql> SELECT VERSION(), CURRENT_DATE;mysql> select version(), current_date;
 mysql> SeLeCt vErSiOn(), current_DATE;
 | 
 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 SIN(PI()/4), (4+1)*5;+-------------+---------+
 | SIN(PI()/4) | (4+1)*5 |
 +-------------+---------+
 |    0.707107 |      25 |
 +-------------+---------+
 | 
 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é.)| 
mysql> SELECT VERSION(); SELECT NOW();+--------------+
 | VERSION()    |
 +--------------+
 | 3.22.20a-log |
 +--------------+
 
 +---------------------+
 | NOW()               |
 +---------------------+
 | 1999-03-19 00:15:33 |
 +---------------------+
 | 
 
Voilà une seule requête sur plusieurs lignes :
 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.| 
mysql> SELECT-> USER()
 -> ,
 -> CURRENT_DATE;
 +--------------------+--------------+
 | USER()             | CURRENT_DATE |
 +--------------------+--------------+
 | joesmith@localhost | 1999-03-18   |
 +--------------------+--------------+
 | 
 
Si vous décidez d'annuler une commande que vous êtes en train de taper, faites-le
en entrant  
\c
  :
 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.| 
mysql> SELECT-> USER()
 -> \c
 mysql>
 | 
 
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 :
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 : 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 USER()-> ;
 +--------------------+
 | USER()             |
 +--------------------+
 | joesmith@localhost |
 +--------------------+
 | 
 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
 .)| 
mysql> SELECT * FROM ma_table WHERE nom = "Smith AND age < 30;">
 | 
 
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
  :
 L'invite se change à nouveau en  
mysql>
 , indiquant que  
mysql
 
est prêt pour une nouvelle requête.| 
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30;"> "\c
 mysql>
 | 
 
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.
 |