| 12.1 Introduction aux types de colonnes
 12 Types de colonnes
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Présentation des types numériques of Numeric Types
 . Présentation des types de données temporels : dates et heures
 ->Présentation des types de chaînes
 
 
 | 
  12.1.3 Présentation des types de chaînes Voici une présentation sommaire des types chaînes de caractères.
Pour plus d'informations, voyez  Types chaînes de caractères .
Le tailles de stockage des lignes sont donnés dans  Taille de stockage des types .
 
 
Dans certains cas, MySQL change le type d'une colonne en un autre, lors
de l'utilisation des commandes  
CREATE TABLE
  et  
ALTER TABLE
 .
 Changement de type de colonne automatique .
Une modification qui affecte de nombreux types de colonnes est que depuis
MySQL version 4.1.1, les définitions de colonnes peuvent inclure l'attribut
 
CHARACTER SET
  pour spécifier le jeu de caractères, et, éventuellement,
la collation de la colonne. Cela s'applique à  
CHAR
 ,  
VARCHAR
 , 
les types  
TEXT
  types,  
ENUM
  et  
SET
 . Par exemple : Cette définition de table crée une colonne appelée  
c1
  dont le jeu
de caractères est  
utf8
  avec la collation par défaut de ce jeu de
caractères, et une colonne appelée  
c2
  qui a le jeu de caractères
 
latin1
  et la collation binaire du jeu de caractères. La collation
binaire n'est pas sensible à la casse.Le tri et les comparaisons de colonnes sont basés sur le jeu de caractères
de la colonne. Avant MySQL 4.1, les tris et comparaisons étaient fait avec
la collation du jeu de caractères du serveur. Pour les colonnes  
CHAR
  et
 
VARCHAR
 , vous pouvez déclarer la colonne avec l'attribut  
BINARY
 
pour que le tri et la recherche soient insensibles à la casse, utilisant
le jeu de caractère sous-jacent, plutôt qu'un ordre lexical.| 
CREATE TABLE t(
 c1 CHAR(20) CHARACTER SET utf8,
 c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin
 );
 | 
 
Pour plus de détails, voyez  Jeux de caractères .
De plus, depuis la version 4.1, MySQL interprète les spécifications de taille
d'une colonne en terme de nombre de caractères. Les versions précédentes 
interprétaient les tailles en nombre d'octets. 
[NATIONAL] CHAR(M) [BINARY | ASCII | UNICODE]
      
Une chaîne de caractère de taille fixe, toujours complété à droite par
des espaces pour remplir l'espace de stockage. L'intervalle de  
M
  
va de 0 à 255 (1 à 255 pour les versions antérieure à la version 3.23).
Les espaces terminaux sont supprimés lorsque la valeur est relue. Les valeurs
 
CHAR
  sont triées et comparées sans tenir compte de la casse,
en utilisant le jeu de caractères par défaut, à moins que le mot
clé  
BINARY
  ne soit utilisé. 
Note
  : les espaces terminaux sont supprimées lorsque 
la valeur est stockée. 
 
Depuis la version 4.1.0, si la valeur  
M
  est supérieure à 255,
Une colonne de type  
TEXT
  est créée.
Ceci est une fonctionnalité de compatibilité.
NATIONAL CHAR
  (sous son équivalent raccourci 
NCHAR
 ) est le
nom SQL-99 pour définir une colonne de type  
CHAR
  qui utilise le 
jeu de caractère par défaut. C'est le comportement par défaut de MySQL. 
CHAR
  est un raccourci pour  
CHARACTER
 .
Depuis la version 4.1.0, l'attribut  
ASCII
  peut être spécifiée
avec, pour assigner le jeu de caractère  
latin1
  à une colonne
de type  
CHAR
 . 
Depuis la version 4.1.1, l'attribut  
UNICODE
  peut être spécifié pour
assigner le jeu de caractères  
ucs2
  à une colonne  
CHAR
 .
MySQL permet la création d'une colonne de type  
CHAR(0)
 . Ceci 
est principalement utile dans de vieille application, qui ont besoin
de la colonne, mais n'ont pas besoin de la valeur. C'est aussi pratique
pour avoir une colonne à deux valeurs : un  
CHAR(0)
 , qui n'est pas défini
comme  
NOT NULL
 , va occuper un bit, et prendre deux valeurs : 
 
NULL
  ou  
""
 . 
CHAR
      Ceci est un synonyme de  
CHAR(1)
 .
      
[NATIONAL] VARCHAR(M) [BINARY]
      
Une chaîne de taille dynamique. 
 
M
  représente la taille maximale de la valeur dans une colonne.
L'intervalle de  
M
  va de 0 à 255 caractères (1 à 255 avant MySQL 4.0.2).
 
Note
  : les espaces terminaux sont supprimées lorsque 
la valeur est stockée  (cela diffère des spécifications de SQL-99). 
Depuis la version 4.1.0, si la valeur  
M
  est supérieure à 255,
Une colonne de type  
TEXT
  est créée.
Ceci est une fonctionnalité de compatibilité.
Par exemple une colonne  
VARCHAR(500)
  est convertie en  
TEXT
 , 
et  
VARCHAR(200000)
  est convertie en 
 
MEDIUMTEXT
 . Attention, cette conversion affecte la suppression des
espaces finaux... 
VARCHAR
  est un raccourci pour  
CHARACTER VARYING
 .
 
TINYBLOB
      
      
TINYTEXT
      
Une colonne  
TINYBLOB
  ou  
TINYTEXT
  peut contenir au maximum 255 (2^8 -{} 1)
caractères. 
      
BLOB
      
      
TEXT
      
Une colonne  
TEXT
  ou  
BLOB
  peut contenir au maximum 65535 (2^16 -{} 1)
caractères. 
      
MEDIUMBLOB
      
      
MEDIUMTEXT
      
Une colonne  
MEDIUMTEXT
  ou  
MEDIUMBLOB
  peut contenir au maximum 16777215
(2^24 -{} 1) caractères. 
      
LONGBLOB
      
      
LONGTEXT
      
Une colonne  
LONGTEXT
  ou  
LONGBLOB
  peut contenir au maximum 
4294967295 ou 4 Go (2^32 -{} 1) caractères. 
Jusqu'en version 3.23 le protocole client/serveur et les tables MyISAM 
avait une limite de 16 Mo par paquet de communication pour une ligne de table.
Depuis les versions 4.x, la taille maximale d'un  
LONGTEXT
  ou  
LONGBLOB
  
dépend de la taille maximal de paquet de communication pour le protocole
de communication, et de la mémoire disponible. 
      
ENUM('value1','value2',...)
      
Une énumération. Un objet chaîne qui peut prendre une valeur, choisie
parmi une liste de valeurs  
'valeur1'
 ,  
'valeur2'
 ,  
...
 ,
 
NULL
  ou la valeur spéciale d'erreur  
""
 .  Une valeur  
ENUM
  peut
avoir un maximum de 65535 valeurs distinctes. 
      
SET('value1','value2',...)
      
Un ensemble. Un objet chaîne, qui peut prendre zéro, une ou plusieurs valeurs,
choisies parmi une liste de valeurs  
'valeur1'
 ,  
'valeur2'
 ,
 
...
  Une valeur  
SET
  peut avoir un maximum de 64 membres.       |