12.1 Introduction aux types de colonnes
12 Types de colonnes
Manuel de Référence MySQL 4.1 : Version Française
. Présentation des types numériques of Numeric Types . Présentation des types de données temporels : dates et heures ->Présentation des types de chaînes
|
12.1.3 Présentation des types de chaînes Voici une présentation sommaire des types chaînes de caractères.
Pour plus d'informations, voyez Types chaînes de caractères .
Le tailles de stockage des lignes sont donnés dans Taille de stockage des types .
Dans certains cas, MySQL change le type d'une colonne en un autre, lors
de l'utilisation des commandes
CREATE TABLE
et
ALTER TABLE
.
Changement de type de colonne automatique .
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 Jeux de caractères .
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 raccourci
NCHAR
) 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
.
-
TINYBLOB
-
-
TINYTEXT
-
Une colonne
TINYBLOB
ou
TINYTEXT
peut contenir au maximum 255 (2^8 -{} 1)
caractères.
-
BLOB
-
-
TEXT
-
Une colonne
TEXT
ou
BLOB
peut contenir au maximum 65535 (2^16 -{} 1)
caractères.
-
MEDIUMBLOB
-
-
MEDIUMTEXT
-
Une colonne
MEDIUMTEXT
ou
MEDIUMBLOB
peut contenir au maximum 16777215
(2^24 -{} 1) caractères.
-
LONGBLOB
-
-
LONGTEXT
-
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.
-
ENUM('value1','value2',...)
-
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.
-
SET('value1','value2',...)
-
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.
|