Voici une présentation sommaire des types chaînes de caractères. Pour plus d'informations, voyez Section 11.4, « Les types chaînes ». Le tailles de stockage des lignes sont donnés dans Section 11.5, « Capacités des colonnes ».
Dans certains cas, MySQL change le type d'une colonne en un
autre, lors de l'utilisation des commandes CREATE
TABLE
et ALTER TABLE
. See
Section 13.2.5.1, « Modification automatique du type de colonnes ».
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 :
CREATE TABLE t ( c1 CHAR(20) CHARACTER SET utf8, c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin );
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.
Pour plus de détails, voyez Chapitre 10, Jeux de caractères et Unicode.
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
raccourciNCHAR
) 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
.
Une colonne TINYBLOB
ou
TINYTEXT
peut contenir au maximum 255
(2^8 − 1) caractères.
Une colonne TEXT
ou
BLOB
peut contenir au maximum 65535 (2^16
− 1) caractères.
Une colonne MEDIUMTEXT
ou
MEDIUMBLOB
peut contenir au maximum
16777215 (2^24 − 1) caractères.
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.
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.
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.
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.