Voici les différents type de champs que l'on peut rencontrer
dans une base de donnée Mysql.
Les champs numériques :
TINYINT |
Entier très petit |
1 octet |
SMALLINT |
Entier petit compris entre -32768
et 32767,
si l'option UNSIGNED est utilisée,
ce nombre sera compris entre 0 et 65535. |
2 octets |
MEDIUMINT |
Entier moyen compris entre -8388608
et 8388607,
si l'option UNSIGNED est utilisée,
ce nombre sera compris entre 0 et 16777215 |
3 octets |
INT |
Entier
standard compris entre
–2 147 483 648 et 2 147 483 647.
Si l'option UNSIGNED est utilisée,
ce nombre sera compris entre 0 et 4 294 967 295 |
4 octets |
BIGINT |
Entier grand |
8 octets |
FLOAT |
Décimal de simple précision |
4 octets |
DOUBLE, REAL |
Décimal de double précision |
8 octets |
DECIMAL (entier,décimal) |
Réel, définissez
la longueur de chacune des deux parties. |
variable |
Le nombre d'octets détermine la place que prend
chaque champ et influe, donc, sur la grandeur des nombres que l'on peut
y stocker.
Par exemple, une colonne de type TINYINT occupe
1 octet. Vous pouvez y stocker 2^8 (256) valeurs différentes.
C'est à dire des nombres allant de -128 à +127 si on prend
en compte le signe, ou de 0 à 255 si le nombre est non signé.
Une colonne de type MEDIUMINT occupe 3 octets (24 bits)
et permet donc de stocker 2^24 (3*8), soit 16 777 216, valeurs différentes.
En pratique, les champs INT et BIGINT seront
donc très rarement utilisés.
Les types entiers ont un paramètre optionnel
permettant de définir le nombre de caractères utilisés
pour représenter les valeurs de la colonne. Un champ de type TINYINT (2)
permet donc de stocker des nombres entre -99 et 99. Il est impossible
d'insérer des valeurs supérieures à 255 dans un
champ de type TINYINT , le nombre serait alors tronqué sans
provoquer de message d'erreur.
Nous ne nous attarderons pas sur les types décimaux.
Il faut simplement savoir que FLOAT et DOUBLE ( REAL est
un alias) ont deux paramètres optionnels : le premier est identique
au paramètre des types entiers et le second indique la place des
chiffres après la virgule. Le type DECIMAL ( NUMERIC est
un alias) est par contre différent : il est stocké sous
forme de chaîne et possède deux paramètres obligatoires,
son utilisation dépend néanmoins de votre version de MySQL.
Vous pouvez consulter le manuel pour en savoir plus.
Concernant le signe, nous avons vu que les champs
pouvaient être signés ou non. Les champs sont signés
par défaut. Pour demander à MySQL de ne pas tenir compte
du signe, il faut ajouter l'argument UNSIGNED à la
suite de la définition de la colonne (ex : TINYINT (4) UNSIGNED ).
Enfin, vous pouvez aussi utiliser l'attribut AUTO_INCREMENT pour,
vous l'avez deviné, incrémenter automatiquement un champ. Les chaînes de caractères :
CHAR (n) |
Chaîne de n caractère,
taille fixe
|
|
VARCHAR(M) |
Chaîne de caractères
variable.
M peut être compris entre 1 et 255. |
255 caractères.
maximum |
TINYBLOB,
TINYTEXT |
Petite zone de texte.
Objet d'une longueur maximale de 255 caractères,
TINYTEXT aura un contenu de type ASCII
(casse insensible) et TINYBLOB aura un contenu
de
type binaire (casse sensible). |
255
caractères. maximum |
BLOB, TEXT |
Zone de texte standard
Objet d'une longueur maximale de 65535 caractères,
TEXT aura un contenu de type ASCII
(casse insensible) et BLOB aura un contenu
de type
binaire (casse sensible). |
65 535 caractères.
maximum |
MEDIUMBLOB,
MEDIUMTEXT |
Zone de texte moyenne.
Objet d'une longueur maximale de 16777216
caractères, MEDIUMTEXT aura un contenu
de type
ASCII (casse insensible) et MEDIUMBLOB aura
un
contenu de type binaire (casse sensible). |
16 millions caractères.
maximum
|
LONGBLOB, LONGTEXT |
Grande zone de texte.
Objet d'une longueur maximale de 4294967295
caractères, LONGTEXT aura un contenu
de type ASCII
(casse insensible) et LONGBLOB aura un contenu
de
type binaire (casse sensible). |
4 milliards caractères.
maximum
|
ENUM('valeur','valeur2',...) |
Une valeur parmi plusieurs
Objet texte qui ne peut avoir qu'une des valeurs
'valeur','valeur2',... |
65535 valeurs max.
|
SET('valeur','valeur2',...) |
Une ou plusieurs valeurs parmi
plusieurs.
Objet texte qui peut avoir une ou plusieurs
des
valeurs 'valeur','valeur2',... |
64 valeurs max. |
La table ci dessous illustre les différences
de taille entre les deux types CHAR et VARCHAR :
Valeur |
CHAR(4) |
Zone
stockage |
VARCHAR(4) |
Zone
stockage |
'' |
'
' |
4
bytes |
'' |
1
byte |
'ab' |
'ab
' |
4
bytes |
'ab' |
3
bytes |
'abcd' |
'abcd' |
4
bytes |
'abcd' |
5
bytes |
'abcdefgh' |
'abcd' |
4
bytes |
'abcd' |
5
bytes |
Les valeurs retournées seront les mêmes,
car dans tous les cas, les espaces situés en début de chaîne
seront effacés.
Il faut noter que les champs de type CHAR et VARCHAR ne
sont pas sensibles à la casse. Autrement dit, lors d'une recherche, "texte" sera
identique à "TexTe" . En effet, pour rendre
ces types de colonnes sensibles à la différence entre majuscule
et minuscule, il faut ajouter l'argument BINARY dans
la définition du champ (ex : VARCHAR (25) BINARY ).
Les quatre types de champs suivants ( BLOB et TEXT )
n'ont, quant à eux, aucun argument. Ils sont utilisés pour
stocker tout type de données (texte, images, etc). Il faut noter
qu'une colonne de type BLOB est sensible à la
casse tandis qu'une colonne de type TEXT ne l'est pas.
NB : Lorsque l'on parle d'être
sensible à la casse ou non, cela concerne uniquement les recherches
et les tris. Ainsi, un champ de type TEXT peut contenir
des majuscules (et les affichera telles quelles) mais ne fera pas la
différence entre majuscule et minuscule lors des tris et des recherches.
Enfin, les types ENUM et SET permettent
de stocker une ou plusieurs (pour SET ) valeurs parmi
un ensemble défini de valeurs. On peut donc associer ENUM aux
champs de type radio , et SET aux champs de
type « case à cocher » ( checkbox) .
A noter que ces deux types peuvent contenir des valeurs null.
Les champs de Types date et heure :
DATE |
Date (ex: 2000-08-24) |
3 octets |
TIME |
Heure (ex: 23:44:05) |
3 octets |
DATETIME |
Date et heure (ex: 2000-08-24
23:44:05) |
8 octets |
YEAR |
Année (ex: 2000) |
1 octet |
Le type DATE est
utilisé pour manipuler simplement une date, sans l'heure. MySQL retourne
et affiche les valeurs de type DATE au
format 'YYYY-MM-DD'
Le type DATETIME est
utile pour manipuler en même temps une date et une heure. . MySQL retourne
et affiche les valeurs de type DATETIME au
format 'YYYY-MM-DD HH:MM:SS'.
Le type TIMESTAMP est
utilisé automatiquement lors de requête , avec la valeur
courante de date et d'heure. Est utilisée pour calculer des différences
entre deux dates.
Chacun de ces différents types a un argument
optionnel permettant de changer légèrement le formatage.
NB : MySql représente les dates ainsi
: l'année, suivie du mois, puis du jour. Le 24 août
2000 est donc représenté sous la forme "2000-08-24 ".
|