| 14.2.6 Syntaxe de CREATE TABLE
 14.2 Définition de données : CREATE , DROP , ALTER
 14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française
 
 ->Modification automatique du type de colonnes
 
 
 | 
  14.2.6.1 Modification automatique du type de colonnes 
Dans certains cas, MySQL change automatiquement la spécification d'une 
colonne fournie dans la commande  
CREATE TABLE
 . (Cela peut aussi
arriver avec  
ALTER TABLE
 ) : 
Les colonnes  
VARCHAR
  avec une taille inférieure à quatre (4) sont 
changées en  
CHAR
 .
Si l'une des colonnes d'une table est de taille variable, toute la ligne 
est, par conséquent, de taille variable. 
Ainsi, si une ligne contient une colonne de taille variable ( 
VARCHAR
 ,
 
TEXT
  ou  
BLOB
 ) toutes les colonnes  
CHAR
  de plus de trois
caractères sont transformées en  
VARCHAR
 . 
Cela ne change en rien la façon dont vous utilisez les colonnes. Pour MySQL,
 
VARCHAR
  est simplement une autre façon de stocker les caractères.
MySQL effectue cette conversion car cela économise de la place, et rend les
calculs sur les tables plus rapides.   Types de tables MySQL .
Depuis la version 4.1.0, si un champ  
CHAR
  ou  
VARCHAR
  est spécifié
avec une taille supérieure à 255, il est converti en  
TEXT
 .
C'est une fonctionnalité de compatibilité.
La taille d'affichage de  
TIMESTAMP
  doit être un nombre pair et être
compris entre 2 et 14. (2, 4, 6, 8, 10, 12 ou 14).
Si vous spécifiez une taille plus grande que 14, ou inférieure à 2, celle-ci
sera transformée en 14. Les valeurs impaires sont ramenées à la valeur pair
supérieure la plus proche.
Vous ne pouvez pas stocker de valeur littérale  
NULL
  dans une colonne
de type  
TIMESTAMP
 . Cette valeur sera remplacée par la date et l'heure
courante. De ce fait, les attributs  
NULL
  et  
NOT NULL
  n'ont pas
de sens pour ces colonnes et sont ignorés. 
 
DESCRIBE nom_de_table
  indiquera toujours que la colonne  
TIMESTAMP
 
accepte les valeurs  
NULL
 . 
Les colonnes qui font partie d'une  
PRIMARY KEY
  ont l'attribut  
NOT NULL
  
même si elles ne sont pas déclarées comme tel.
Depuis MySQL 3.23.51, les espaces terminaux sont automatiquement supprimés
des valeurs  
ENUM
  et  
SET
  lors de la création de la table.
MySQL change certains type de colonnes utilisés par d'autres serveurs SQL en types
MySQL.  Utiliser les types de colonnes d'autres bases .
Si vous utilisez une clause  
USING
  pour spécifier un type d'index qui 
n'est pas légal pour un moteur de stockage, mais qu'un autre type d'index
est disponible pour ce moteur sans affecter les résultats, le moteur utilisera
le type disponible. 
Si vous voulez voir si MySQL a utilisé un autre type que celui que vous avez spécifié,
utilisez la commande  
DESCRIBE nom_de_table
 , après votre création ou modification
de structure de table.
Certain types de colonnes peuvent être modifiés si vous compressez une table en
utilisant l'utilitaire  
myisampack
 .  Caractéristiques des tables compressées . |