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.
|