Les types CHAR et VARCHAR
<<<
Les types BLOB et TEXT Le type ENUM
>>>

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.2 Les types BLOB et TEXT

Une valeur de type BLOB est un objet binaire de grande taille, qui peut contenir une quantité variable de données. Les quatre types BLOB ( TINYBLOB , BLOB , MEDIUMBLOB , et LONGBLOB ) ne différent que par la taille maximale de données qu'ils peuvent stocker. Taille de stockage des types .

Les quatre types TEXT ( TINYTEXT , TEXT , MEDIUMTEXT , et LONGTEXT correspondent aux types BLOB équivalents, et ont les mêmes contraintes de stockage. Les seules différences entre les colonnes de type BLOB et celles de type TEXT se situent aux niveau des tris et comparaisons : Les tris, faits sur les BLOB , contrairement à ceux faits sur les TEXT , tiennent compte de la casse. En d'autres termes, une valeur TEXT est une valeur BLOB insensible à la casse.

Si vous assignez une valeur trop grande à une colonne de type BLOB ou TEXT , la valeur sera tronquée à la taille maximale possible.

Dans la majorité des cas, vous pouvez considérer une colonne de type TEXT comme une colonne de type VARCHAR , aussi grande que vous le souhaitez. De même, vous pouvez considérer une colonne de type BLOB comme une colonne de type VARCHAR BINARY . Les seules différences sont :

  • Vous pouvez indexer les colonnes de type BLOB ou TEXT à partir de la version 3.23.2 de MySQL. Les versions plus anciennes ne peuvent pas indexer ces colonnes.
  • Pour les index des colonnes BLOB et TEXT , vous devez spécifier une taille d'index. Pour les colonnes de type CHAR et VARCHAR , la taille du préfixe est optionnelle.
  • Il n'y a pas de suppression des espaces finaux lors du stockage de valeur dans des colonnes de type BLOB et TEXT , ce qui est le cas dans pour les colonnes de type VARCHAR .
  • Les colonnes BLOB et TEXT ne peuvent avoir de valeur par défaut. ( DEFAULT )
MyODBC considère les valeurs BLOB comme des LONGVARBINARY et les valeurs TEXT comme des LONGVARCHAR .

Vous pouvez rencontrer les problèmes suivants, à cause de la grande taille des colonnes de type BLOB et TEXT , lors de leur utilisation :

  • Si vous voulez utiliser les commandes GROUP BY ou ORDER BY sur une colonne de type BLOB ou TEXT , vous devez d'abord la convertir en un objet de taille fixe. Le meilleur moyen est d'utiliser la fonction SUBSTRING . Par exemple :
    
    mysql> SELECT comment FROM nom_de_table,SUBSTRING(comment,20) AS substr
        ->                 ORDER BY substr;
    Si vous le ne faites pas, seuls les max_sort_length premiers octets de la colonne seront utilisés pour le tri. La valeur par défaut de max_sort_length est 1024. Cette valeur peut être modifiée en utilisant l'option -O au démarrage du serveur mysqld . Vous pouvez utiliser la commande GROUP BY sur une colonne de type BLOB ou TEXT en spécifiant la position de la colonne, ou avec un alias :
    
    mysql> SELECT id,SUBSTRING(blob_col,1,100) FROM nom_de_table GROUP BY 2;
    mysql> SELECT id,SUBSTRING(blob_col,1,100) AS b FROM nom_de_table GROUP BY b;
  • La taille maximale d'un objet BLOB ou TEXT est déterminée par son type, mais la valeur la plus grande que vous pouvez transmettre au programme client est déterminée par la quantité de mémoire disponible sur le serveur et par les tailles des buffers de communication. Vous pouvez changer la taille des buffers de communication, mais vous devez le faire sur le serveur et le client en même temps. Choix des paramètres du serveur .

    Par exemple, mysql et mysqldump vous autorises tous les deux à modifier la valeur cliente de max_allowed_packet . Voyez Choix des paramètres du serveur , L'outil de ligne de commande et mysqldump , exporter les structures de tables et les données .

Notez que chaque valeur BLOB ou TEXT est représentée en interne par un objet alloué séparément, contrairement à tous les autres types de colonne, pour lesquels la place de stockage est allouée une fois pour chaque colonne, lorsque la table est ouverte.

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