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.