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. See Section 11.5, « Capacités des colonnes ».
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. See
Section 7.5.2, « Réglage des paramètres du serveur ».
Par exemple, mysql et
mysqldump vous autorises tous les deux à
modifier la valeur cliente de
max_allowed_packet. Voyez
Section 7.5.2, « Réglage des paramètres du serveur », Section 8.3, « mysql, l'outil en ligne de commande »
et Section 8.8, « mysqldump, sauvegarde des 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.
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.
