Les noms des bases de données, tables, index, colonnes et alias suivent tous les mêmes règles en MySQL.
La table suivante décrit la taille maximale et les caractères autorisées pour chaque type d'identifiant.
| Identifiant | Longueur maximale | Caractères autorisés | 
| Base de données | 64 | Tous les caractères autorisés dans un nom de dossier à part
              ‘/’,
              ‘\’ et
              ‘.’. | 
| Table | 64 | Tous les caractères autorisés dans le nom d'un fichier à part
              ‘/’ et
              ‘.’. | 
| Colonne | 64 | Tous. | 
| Index | 64 | Tous. | 
| Alias | 255 | tous. | 
Notez qu'en plus de ce qui précède, vous n'avez pas droit au caractères ASCII(0) ou ASCII(255) dans un identifiant. Avant MySQL 4.1, les identifiants que pouvaient pas contenir de guillemets.
      Depuis MySQL 4.1, les identifiants sont stockés en Unicode
      (UTF8). Cela s'applique aux identifiants stockés dans les tables
      de définitions du fichier .frm, et aux
      identifiants stockés dans les tables de droits de la base
      mysql. Même si les identifiants Unicode
      peuvent inclure des caractères multi-octets, notez que les
      tailles maximales affichées dans la table sont donnés en octets.
      Si un identifiant contient un caractère multi-octet, le nombre de
      caractères autorisé est alors inférieur
      aux chiffres affichés.
    
      Un identifiant peut être entre guillemet ou pas. Si un
      identifiant est un mot réservé, ou qu'il contient des
      caractères spéciaux, vous devez le mettre
      entre guillemets lorsque vous l'utilisez. Pour une liste des mots
      réservés, voyez Section 9.6, « Cas des mots réservés MySQL ». Les
      caractères spéciaux sont hors de la plage des caractères
      alpha-numérique et ‘_’ et
      ‘$’.
    
      Notez que si un identifiant est un mot réservé, ou contient des
      caractères spéciaux, vous devez absolument le protéger avec
      ‘`’ :
    
      Le caractère de protection des identifiants est le guillemet
      oblique ‘`’ :
    
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
      Si vous utilisez MySQL avec les modes MAXDB ou
      ANSI_QUOTES, il est aussi possible d'utiliser
      les guillemets doubles pour les identifiants :
    
mysql>CREATE TABLE "test" (col INT);ERROR 1064: You have an error in your SQL syntax. (...) mysql>SET SQL_MODE="ANSI_QUOTES";mysql>CREATE TABLE "test" (col INT);Query OK, 0 rows affected (0.00 sec)
See Section 1.5.2, « Sélectionner les modes SQL ».
      Depuis MySQL 4.1, les guillemets peuvent être inclus dans les
      noms d'identifiants. Si le caractère inclus dans l'identifiant
      est le même que celui qui est utilisé pour protéger
      l'identifiant, doublez-le. La commande suivante crée la table
      a`b, qui contient la colonne
      c"d :
    
mysql> CREATE TABLE `a``b` (`c"d` INT);
La protection d'identifiant par guillemets a été introduite en MySQL 3.23.6 pour permettre l'utilisation de mots réservés ou des caractères spéciaux dans les noms de colonnes. Avant la version 3.23.6, vous ne pouviez pas utiliser les identifiants qui utilisent des guillemets, et les règles sont plus restrictives :
          Un nom d'identifiant est constitué de caractères
          alpha-numériques issus du jeu de caractères courant, plus
          ‘_’ et
          ‘$’. Le jeu de caractères par
          défaut est ISO-8859-1 (Latin1). Cela peut être modifié avec
          l'option de démarrage
          --default-character-set de
          mysqld. See
          Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
        
Un nom peut commencer avec n'importe quel caractère qui est valide dans un identifiant. En particulier, un nom peut commencer par un chiffre : cela est différent dans de nombreuses autres bases de données. Cependant, un nom sans guillemets ne peut pas contenir uniquement des chiffres.
          Vous ne pouvez pas utiliser le caractère
          ‘.’ dans les noms, car il est
          utilisé pour les formats complets de références aux
          colonnes, en utilisant les noms de tables ou de bases. (see
          Section 9.2.1, « Identifiants »).
        
      Il est recommandé de ne pas utiliser de noms comme
      1e, car une expression comme
      1e+1 est ambigue. Elle pourrait être
      interprétée comme l'expression 1e + 1 ou
      comme le nombre 1e+1, suivant le contexte.
    
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.
