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

TypeNb OctetsCommentaires
TINYINT[(M)] [UNSIGNED] [ZEROFILL]1Très petit entier. Va de -128 à 127, de 0 à 255 si non signé
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]2Petit entier. Va de -32 768 à 32 767, de 0 à 65 535 si non signé
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]3Entier moyen. Va de -8 388 608 à 8 388 607, de 0 à 16 777 215 si non signé
INT[(M)] [UNSIGNED] [ZEROFILL]4Va de -2 147 483 648 à 2 147 483 647, de 0 à 4 294 967 295 si non signé
INTEGER[(M)] [UNSIGNED] [ZEROFILL]4Synonyme de INT
BIGINT[(M)] [UNSIGNED] [ZEROFILL]8Grand 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 <= 53Flottant
FLOAT[(M,D)] [ZEROFILL]4Flottant à precision simple. Va de -1.175494351E-38 à 3.402823466E+38
DOUBLE[(M,D)] [ZEROFILL]8Flottant à double precision. Va de -2.2250738585072014E-308 à 1.7976931348623157E+308
DOUBLE PRECISION[(M,D)] [ZEROFILL]8Synonyme de DOUBLE
REAL[(M,D)] [ZEROFILL]8Synonyme 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
DATE3Date 'YYYY-MM-DD' allant de '1000-01-01' à '9999-12-31'
DATETIME8Date et heure 'YYYY-MM-DD HH:MM:SS' allant de '1000-01-01 00:00:00' à '9999-12-31 23:59:59'
TIMESTAMP[(M)]4Date 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
TIME3Heure 'HH:MM:SS', allant de '-838:59:59' à '838:59:59'
YEAR[(2|4)]1Anné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 <= 255Chaî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
BIT1Synonyme de CHAR(1)
BOOL1Synonyme de CHAR(1)
CHAR1Synonyme de CHAR(1)
[NATIONAL] VARCHAR(M) [BINARY]L+1 octets, où L <= M et 1 <= M <= 255Chaîne de caractères (jusqu'à 255). BINARY entraine une recherche sensible à la casse
TINYBLOBL+1 octets, où L < 2^8Chaîne de charactères (jusqu'à 255), sensible à la casse
TINYTEXTL+1 octets, où L < 2^8Chaîne de charactères (jusqu'à 255), insensible à la casse
BLOBL+2 octets, où L < 2^16Chaîne de charactères (jusqu'à 65 535), sensible à la casse
TEXTL+2 octets, où L < 2^16Chaîne de charactères (jusqu'à 65 535), insensible à la casse
MEDIUMBLOBL+3 octets, où L < 2^24Chaîne de charactères (jusqu'à 16 777 215), sensible à la casse
MEDIUMTEXTL+3 octets, où L < 2^24Chaîne de charactères (jusqu'à 16 777 215), insensible à la casse
LONGBLOBL+4 octets, où L < 2^32Chaîne de charactères (jusqu'à 4 294 967 295), sensible à la casse
LONGTEXTL+4 octets, où L < 2^32Chaî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'ensembleEnsemble 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