Maintenant que vous savez vous connecter, vous allez enfin pouvoir discuter avec le serveur MySQL (en langage SQL évidemment). Donc, reconnectez-vous si vous êtes déconnectés.
Vous pouvez constater que vous êtes connectés grâce au joli (quoiqu'un peu formel) message de bienvenue, ainsi qu'au changement de l'invite de commande. On voit maintenant
mysql>
."Hello World !"
Traditionnellement, lorsque l'on apprend un langage informatique, la première chose que l'on fait, c'est afficher le célèbre message "Hello World !". Pour ne pas déroger à la règle, je vous propose de taper la commande suivante (sans oublier le ; à la fin) :
SELECT 'Hello World !';
SELECT
est la commande qui permet la sélection de données, mais aussi l'affichage. Vous devriez donc voir s'afficher "Hello World !"
Hello World !
|
---|
Hello World !
|
Comme vous le voyez, "Hello World !" s'affiche en réalité deux fois. C'est parce que MySQL représente les données sous forme de table. Il affiche donc une table avec une colonne, qu'il appelle "Hello World !" faute de meilleure information. Et dans cette table nous avons une ligne de données, le "Hello World !" que nous avons demandé.
Syntaxe
Avant d'aller plus loin, voici quelques règles générales à retenir concernant le SQL qui, comme tout langage informatique, obéit à des règles syntaxiques très strictes.
Fin d'une instruction
Pour signifier à MySQL qu'une instruction est terminée, il faut mettre le caractère ;. Tant qu'il ne rencontre pas ce caractère, le client MySQL pense que vous n'avez pas fini d'écrire votre commande et attend gentiment que vous continuiez.
Par exemple, la commande suivante devrait afficher 100. Mais tant que MySQL ne recevra pas de ;, il attendra simplement la suite.
SELECT 100
En appuyant sur la touche Entrée vous passez à la ligne suivante, mais la commande ne s'effectue pas. Remarquez au passage le changement dans l'invite de commande.
mysql>
signifie que vous allez entrer une commande, tandis que ->
signifie que vous allez entrer la suite d'une commande commencée précédemment.
Tapez maintenant ; puis appuyer sur Entrée. Ca y est, la commande est envoyée, l'affichage se fait !
Ce caractère de fin d'instruction obligatoire va vous permettre :
- d'écrire une instruction sur plusieurs lignes ;
- d'écrire plusieurs instructions sur une seule ligne.
Commentaires
Les commentaires sont des parties de code qui ne sont pas interprétées. Ils servent principalement à vous repérer dans votre code. En SQL, les commentaires sont introduits par -- (deux tirets). Cependant, MySQL déroge un peu à la règle SQL et accepte deux syntaxes :
- # : tout ce qui suit ce caractère sera considéré comme commentaire
- -- : la syntaxe normale est acceptée uniquement si les deux tirets sont suivis d'une espace au moins
Afin de suivre au maximum la norme SQL, ce sont les -- qui seront utilisés tout au long de ce tutoriel.
Chaînes de caractères
Lorsque vous écrivez une chaîne de caractères dans une commande SQL, il faut absolument l'entourer de guillemets simples (donc des apostrophes).
Exemple : la commande suivante sert à afficher "Bonjour petit Zéro !"
SELECT 'Bonjour petit Zéro !';
Par ailleurs, si vous désirez utiliser un caractère spécial dans une chaîne, il vous faudra l'échapper avec \. Par exemple, si vous entourez votre chaîne de caractères de guillemets simples mais voulez utiliser un tel guillemet à l'intérieur de votre chaîne :
SELECT 'Salut l'ami'; -- Pas bien !
SELECT 'Salut l\'ami'; -- Bien !
Quelques autres caractères spéciaux :
retour à la ligne
| |
tabulation
| |
\
|
antislash (eh oui, il faut échapper le caractère d'échappement…)
|
%
|
pourcent (vous verrez pourquoi plus tard)
|
_
|
souligné (vous verrez pourquoi plus tard aussi)
|
Notez que pour échapper un guillemet simple (et uniquement ce caractère), vous pouvez également l'écrire deux fois. Cette façon d'échapper les guillemets correspond d'ailleurs à la norme SQL. Je vous encourage par conséquent à essayer de l'utiliser au maximum.
SELECT 'Salut l'ami'; -- ne fonctionne pas !
SELECT 'Salut l\'ami'; -- fonctionne !
SELECT 'Salut l''ami'; -- fonctionne aussi et correspond à la norme !
Un peu de math
MySQL est également doué en calcul :
SELECT (5+3)*2;
Pas de guillemets cette fois puisqu'il s'agit de nombres. MySQL calcule pour nous et nous affiche :
(5+3)*2
|
---|
16
|
MySQL est sensible à la priorité des opérations, comme vous pourrez le constater en tapant cette commande :
SELECT (5+3)*2, 5+3*2;
Résultat :
(5+3)*2
|
5+3*2
|
---|---|
16
|
11
|
Utilisateur
Il n'est pas très conseillé de travailler en tant que "root" dans MySQL, à moins d'en avoir spécifiquement besoin. En effet, "root" a tous les droits. Ce qui signifie que vous pouvez faire n'importe quelle bêtise dans n'importe quelle base de données pendant que j'ai le dos tourné. Pour éviter ça, nous allons créer un nouvel utilisateur, qui aura des droits très restreints. Je l’appellerai "sdz", mais libre à vous de lui donner le nom que vous préférez. Pour ceux qui sont sous Unix, notez que si vous créez un utilisateur du même nom que votre utilisateur Unix, vous pourrez dès lors omettre ce paramètre lors de votre connexion à mysql.
Je vous demande ici de me suivre aveuglément, car je ne vous donnerai que très peu d'explications. En effet, la gestion des droits et des utilisateurs fera l'objet d'un chapitre entier dans une prochaine partie du cours. Tapez donc cette commande dans mysql, en remplaçant sdz par le nom d'utilisateur que vous avez choisi, et mot_de_passe par le mot de passe que vous voulez lui attribuer :
GRANT ALL PRIVILEGES ON elevage.* TO 'sdz'@'localhost' IDENTIFIED BY 'mot_de_passe';
Je décortique donc rapidement :
-
GRANT ALL PRIVILEGES
: Cette commande permet d'attribuer tous les droits (c'est-à-dire insertions de données, sélections, modifications, suppressions…) ON elevage.*
: définit les bases de données et les tables sur lesquelles ces droits sont acquis. Donc ici, on donne les droits sur la base "elevage" (qui n'existe pas encore, mais ce n'est pas grave, nous la créerons plus tard), pour toutes les tables de cette base (grâce à *).TO 'sdz'
: définit l'utilisateur auquel on accorde ces droits. Si l'utilisateur n'existe pas, il est créé.@'localhost'
: définit à partir d'où l'utilisateur peut exercer ces droits. Dans notre cas, 'localhost', donc il devra être connecté à partir de cet ordinateur.IDENTIFIED BY 'mot_de_passe'
: définit le mot de passe de l'utilisateur.
Pour vous connecter à mysql avec ce nouvel utilisateur, il faut donc taper la commande suivante (après s'être déconnecté bien sûr) :
mysql -u sdz -p
En résumé
- MySQL peut s'utiliser en ligne de commande ou avec une interface graphique.
- Pour se connecter à MySQL en ligne de commande, on utilise :
mysql -u utilisateur [-h hôte] -p
. - Pour terminer une instruction SQL, on utilise le caractère ;.
- En SQL, les chaînes de caractères doivent être entourées de guillemets simples '.
- Lorsque l'on se connecte à MySQL, il faut définir l'encodage utilisé, soit directement dans la connexion avec l'option
--default-character-set
, soit avec la commandeSET NAMES
.