21mar/110

Les bases de MySQL

mysql

Lors de la création d'une base de données il est toujours bon d'avoir en mémoire les différents types de colonnes MySQL. (M décrit la taille maximale d'affichage du champ, D est mis pour décimal, UNSIGNED permet d'optimiser le stockage de chiffres positifs, ZEROFILL remplit les chiffres de zéros).

Type Nb Octets Commentaires
TINYINT[(M)] [UNSIGNED] [ZEROFILL] 1 Très petit entier. Va de -128 à 127, de 0 à 255 si non signé
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 2 Petit entier. Va de -32 768 à 32 767, de 0 à 65 535 si non signé
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] 3 Entier moyen. Va de -8 388 608 à 8 388 607, de 0 à 16 777 215 si non signé
INT[(M)] [UNSIGNED] [ZEROFILL] 4 Va de -2 147 483 648 à 2 147 483 647, de 0 à 4 294 967 295 si non signé
INTEGER[(M)] [UNSIGNED] [ZEROFILL] 4 Synonyme de INT
BIGINT[(M)] [UNSIGNED] [ZEROFILL] 8 Grand entier. Va de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807, de 0 à 18 446 744 073 709 551 615 si non signé
FLOAT(précision) [ZEROFILL] 4 si précision <= 24 ou 8 si 25 <= precision <= 53 Flottant
FLOAT[(M,D)] [ZEROFILL] 4 Flottant à precision simple. Va de -1.175494351E-38 à 3.402823466E+38
DOUBLE[(M,D)] [ZEROFILL] 8 Flottant à double precision. Va de -2.2250738585072014E-308 à 1.7976931348623157E+308
DOUBLE PRECISION[(M,D)] [ZEROFILL] 8 Synonyme de DOUBLE
REAL[(M,D)] [ZEROFILL] 8 Synonyme de DOUBLE
DECIMAL[(M[,D])] [ZEROFILL] M+2 octets si D > 0, M+1 octets si D = 0 (D+2, si M < D) Flottant stocké comme une chaîne de caractères
NUMERIC(M,D) [ZEROFILL] M+2 octets si D > 0, M+1 octets si D = 0 (D+2, si M < D) Synonyme de DECIMAL
DATE 3 Date 'YYYY-MM-DD' allant de '1000-01-01' à '9999-12-31'
DATETIME 8 Date et heure 'YYYY-MM-DD HH:MM:SS' allant de '1000-01-01 00:00:00' à '9999-12-31 23:59:59'
TIMESTAMP[(M)] 4 Date allant de '1970-01-01 00:00:00' à quelque part en 2037. L'affichage dépend de M : YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, ou YYMMDD pour, respectivement : 14, 12, 8, ou 6
TIME 3 Heure 'HH:MM:SS', allant de '-838:59:59' à '838:59:59'
YEAR[(2|4)] 1 Année à 2 ou 4 chiffres allant de 1901 à 2155 pour 4 chiffres et de 1970-2069 pour 2 chiffres
[NATIONAL] CHAR(M) [BINARY] M octets, 1 <= M <= 255 Chaîne de charactères (jusq'à 255) remplie d'espaces à la fin. Ces espaces sont enlevés lors d'une requête. BINARY entraine une recherche sensible à la casse
BIT 1 Synonyme de CHAR(1)
BOOL 1 Synonyme de CHAR(1)
CHAR 1 Synonyme de CHAR(1)
[NATIONAL] VARCHAR(M) [BINARY] L+1 octets, où L <= M et 1 <= M <= 255 Chaîne de caractères (jusqu'à 255). BINARY entraine une recherche sensible à la casse
TINYBLOB L+1 octets, où L < 2^8 Chaîne de charactères (jusqu'à 255), sensible à la casse
TINYTEXT L+1 octets, où L < 2^8 Chaîne de charactères (jusqu'à 255), insensible à la casse
BLOB L+2 octets, où L < 2^16 Chaîne de charactères (jusqu'à 65 535), sensible à la casse
TEXT L+2 octets, où L < 2^16 Chaîne de charactères (jusqu'à 65 535), insensible à la casse
MEDIUMBLOB L+3 octets, où L < 2^24 Chaîne de charactères (jusqu'à 16 777 215), sensible à la casse
MEDIUMTEXT L+3 octets, où L < 2^24 Chaîne de charactères (jusqu'à 16 777 215), insensible à la casse
LONGBLOB L+4 octets, où L < 2^32 Chaîne de charactères (jusqu'à 4 294 967 295), sensible à la casse
LONGTEXT L+4 octets, où L < 2^32 Chaîne de charactères (jusqu'à 4 294 967 295), insensible à la casse
ENUM('value1','value2',...) 1 ou 2 octets, selon le nombre d'énumérations (65 535 valeurs maximum) Enumération de 65 535 chaînes différentes
SET('value1','value2',...) 1, 2, 3, 4 ou 8 octets, selon de nombre de membres de l'ensemble Ensemble qui peut contenir de 0 à plusieurs valeurs choisies dans une liste de valeurs
  • pour un auto-increment, utiliser MEDIUMINT UNSIGNED qui permet d'identifier 16 777 215 enregistrements en ne consommant que 3 octets.
  • pour les devises, l'usage de DECIMAL est encouragé pour une bonne gestion de la précision.
  • pour les dates, le type TIMESTAMP est déconseillé, lourd à gérer lors des mises à jours, il faut lui préférer DATETIME.
  • un mot tout de même sur l'unique différence entre un champ de type BLOB et un champ de type TEXT : BLOB est sensible à la casse alors que TEXT est insensible à la casse.
  • PHP ne faisant pas de différence entre 0 et NULL, autant déclarer tous les champs NOT NULL, on gagne ainsi 1 bit par champ et par enregistrement.
Taggé comme: ,

Faites un lien vers cette news sur votre site

Commentaires (0)

Aucun commentaire pour l'instant


Laisser un commentaire