Les types BLOB et TEXT
<<<
Le type ENUM Le type SET
>>>

12.4 Les types chaînes
12 Types de colonnes
 Manuel de Référence MySQL 4.1 : Version Française

Les types CHAR et VARCHAR
Les types BLOB et TEXT
->Le type ENUM
Le type SET

12.4.3 Le type ENUM

Une énumération ENUM est une chaîne dont la valeur est choisie parmi une liste de valeurs autorisées lors de la création de la table.

Cette chaîne peut aussi être la chaîne vide ( "" ) ou NULL dans certaines circonstances :

  • Si vous insérez une valeur illégale dans une énumération ENUM (c'est à dire, une chaîne qui n'est pas dans la liste de valeurs autorisées), la chaîne vide est insérée pour représenter une erreur. Cette chaîne peut être distinguée d'une chaîne vide 'normale' par le fait que cette chaîne à la valeur numérique 0. Nous reviendrons sur ce point plus tard.
  • Si une colonne d'énumération est déclarée NULL , NULL devient aussi une valeur autorisée, et la valeur par défaut est alors NULL . Si une colonne d'énumération est déclarée NOT NULL , la valeur par défaut est le premier élément de la liste des valeurs autorisées.
Chaque élément de l'énumération dispose d'un index :
  • Les valeurs de la liste des valeurs autorisées sont indexées à partir de 1.
  • L'index de la chaîne vide (cas d'erreur) est 0. Cela signifie que vous pouvez utiliser la sélection suivante pour repérer les valeurs d'énumération invalides :
    
    mysql> SELECT * FROM nom_de_table WHERE enum_col=0;
    
  • L'index de la valeur NULL est NULL .
Par exemple, une colonne créée comme ENUM("un", "deux", "trois") peut prendre n'importe quelle valeur ci-dessous. L'index de chaque valeur est aussi présenté :
Valeur Index
NULL NULL
"" 0
"un" 1
"deux" 2
"trois" 3
Une énumération peut avoir un maximum de 65535 éléments.

A partir de la version 3.23.51, les espaces en début et fin de chaîne sont automatiquement supprimés des éléments de l'énumération ENUM lorsque la table est créée.

La casse des lettres est sans importance lors de l'assignation de valeurs dans une énumération. Cependant, les valeurs lues dans la base auront la même casse que celle spécifiée lors de la création de la table.

Si vous lisez le contenu d'une énumération dans un contexte numérique, l'index de la valeur ENUM sera retournée. Par exemple, vous pouvez lire des valeurs numériques comme ceci :


mysql> SELECT enum_col+0 FROM nom_de_table;
Si vous stockez un nombre dans une colonne de type ENUM , le nombre sera traité comme un index, et la valeur stockée sera celle de l'élément ayant cet index (Attention, cela ne fonctionnera pas avec les commandes LOAD DATA , car cette dernière traite toutes les valeurs comme des chaînes). Il est déconseillé de stocker des valeurs numériques dans un ENUM car cela engendre des confusions. Par exemple, la colonne suivante est une énumération de chaînes contenant les valeurs '0' , '1' et '2' , mais leur valeur numérique est 1 , 2 et 3 :

numbers ENUM('0','1','2')
Les valeurs de type ENUM sont triées en fonction de l'ordre des éléments, fixé à la création de la table (en d'autres termes, les valeurs ENUM sont stockées en fonction de leur index). Par exemple, "a" précède "b" dans l'énumération ENUM("a", "b") , mais "b" précède "a" dans l'énumération ENUM("b", "a") . La chaîne vide précède toujours les chaînes non vides, et NULL précède toutes les valeurs. Si vous voulez connaître toutes les valeurs possibles d'une colonne de type ENUM , pensez à utiliser cette commande : SHOW COLUMNS FROM nom_de_table LIKE enum_column_name , puis analysez la définition de la colonne de type ENUM (deuxième colonne dans le résultat).

<< Le type ENUM >>
Les types BLOB et TEXT Les types chaînes Le type SET