Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


Manuel de référence MySQL 8.0 - Structure du langage

Literal Values

Schema Object Names

Keywords and Reserved Words

User-Defined Variables

Expressions

Query Attributes

Commentaires

MySQL Server prend en charge trois styles de commentaires :

  1. Depuis un caractère # jusqu'à la fin de la ligne
  2. Depuis un double tiret (--) jusqu'à la fin de la ligne : dans MySQL, le deuxième tiret du double tiret (--) doit être suivi d'au moins un espace ou un caractère de contrôle (comme un espace, une tabulation, une nouvelle ligne, etc.). Cette syntaxe diffère légèrement de la syntaxe standard des commentaires SQL.
  3. Depuis une séquence /* jusqu'à la séquence */ qui suit, comme dans le langage de programmation C. Cette syntaxe permet à un commentaire de s'étendre sur plusieurs lignes car les séquences de début et de fin n'ont pas besoin d'être sur la même ligne.

L'exemple suivant montre les trois styles de commentaires :

mysql> SELECT 1+1;     # Ce commentaire se poursuit jusqu'à la fin de la ligne
mysql> SELECT 1+1;     -- Ce commentaire se poursuit jusqu'à la fin de la ligne
mysql> SELECT 1 /* ceci est un commentaire en ligne */ + 1;
mysql> SELECT 1+
/*
ceci est un
commentaire sur plusieurs lignes
*/
1;

Les commentaires imbriqués ne sont pas pris en charge et sont obsolètes ; les utilisateurs doivent les éviter.

Le serveur MySQL prend en charge certaines variantes de commentaires de style C. Ceux-ci vous permettent d'écrire du code qui inclut des extensions MySQL, mais qui reste portable, en utilisant des commentaires de la forme suivante :

/*! MySQL-specific code */

Dans ce cas, le serveur MySQL analyse et exécute le code dans le commentaire comme il le ferait pour toute autre instruction SQL, mais les autres serveurs SQL ignorent les extensions. Par exemple, MySQL Server reconnaît le mot clé STRAIGHT_JOIN dans l'instruction suivante, mais pas les autres serveurs :

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

Si vous ajoutez un numéro de version après le caractère !, la syntaxe dans le commentaire n'est exécutée que si la version MySQL est supérieure ou égale au numéro de version spécifié. Le mot-clé KEY_BLOCK_SIZE dans le commentaire suivant n'est exécuté que par les serveurs de MySQL 5.1.10 ou supérieur :

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

La syntaxe de commentaire qui vient d'être décrite s'applique à la façon dont le serveur mysqld analyse les instructions SQL. Le client mysql effectue également une analyse des instructions avant de les envoyer au serveur. (pour déterminer les limites des instructions dans une ligne d'entrée à plusieurs instructions.).

Les commentaires au format /*!12345 … */ ne sont pas stockés sur le serveur. Si ce format est utilisé pour commenter des programmes stockés, les commentaires ne sont pas conservés dans le corps du programme.

Une autre variante de la syntaxe de commentaire de style C est utilisée pour spécifier des conseils d'optimisation. Les commentaires d'indice incluent un caractère + après la séquence d'ouverture de commentaire /*. Exemple :

SELECT /*+ BKA(t1) */ FROM ... ;

L'utilisation de commandes mysql abrégées telles que \C dans des commentaires /* … */ sur plusieurs lignes n'est pas prise en charge. Les commandes abrégées fonctionnent dans /* sur une seule ligne ! … */ commentaires de version, tout comme /*+ … */ commentaires d'optimisation, qui sont stockés dans les définitions d'objets. Si vous craignez que les commentaires de l'optimiseur soient stockés dans les définitions d'objets de telle sorte que les fichiers de vidage, lorsqu'ils sont rechargés avec mysql, entraînent l'exécution de telles commandes, invoquez mysql avec l'option –binary-mode ou utilisez un client de rechargement autre que mysql.

Voir aussi


Basé sur « Language structure » par Manuel de référence MySQL 8.0.