Types de données MySQL

Dans MySQL, définir le type des champs de données est très important pour l'optimisation de votre base de données.

MySQL prend en charge plusieurs types, qui peuvent être grossièrement répartis en trois catégories : les types numériques, les types date/heure et les types chaîne (caractère).


Types numériques

MySQL prend en charge tous les types de données numériques SQL standard.

Ces types incluent les types de données numériques exacts (INTEGER, SMALLINT, DECIMAL et NUMERIC), ainsi que les types de données numériques approximatifs (FLOAT, REAL et DOUBLE PRECISION).

Le mot-clé INT est un synonyme de INTEGER, et le mot-clé DEC est un synonyme de DECIMAL.

Le type de données BIT stocke des valeurs de champ de bits et prend en charge les tables MyISAM, MEMORY, InnoDB et BDB.

En tant qu'extension de la norme SQL, MySQL prend également en charge les types entiers TINYINT, MEDIUMINT et BIGINT. Le tableau ci-dessous indique le stockage et la plage requis pour chaque type entier.

Type Size Plage (signé) Plage (non signé) Utilisation
TINYINT 1 Bytes (-128,127) (0,255) Petite valeur entière
SMALLINT 2 Bytes (-32 768,32 767) (0,65 535) Grande valeur entière
MEDIUMINT 3 Bytes (-8 388 608,8 388 607) (0,16 777 215) Grande valeur entière
INT ou INTEGER 4 Bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) Grande valeur entière
BIGINT 8 Bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) Valeur entière extrêmement grande
FLOAT 4 Bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) Précision simple
Valeur à virgule flottante
DOUBLE 8 Bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) Double précision
Valeur à virgule flottante
DECIMAL Pour DECIMAL(M,D), si M>D, il s'agit de M+2 ; sinon, D+2 Dépend des valeurs de M et D Dépend des valeurs de M et D Valeur décimale

Types de date et d'heure

Les types de date et d'heure servant à représenter des valeurs temporelles sont DATETIME, DATE, TIMESTAMP, TIME et YEAR.

Chaque type d'heure possède une plage valide de valeurs et une valeur « zéro », utilisée lorsqu'une valeur non valide que MySQL ne peut pas représenter est spécifiée.

Le type TIMESTAMP dispose d'une fonctionnalité de mise à jour automatique propriétaire, qui sera décrite plus tard.

Type Size
( octets)
Range Format Utilisation
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD Valeur de date
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS Valeur temporelle ou durée
YEAR 1 1901/2155 YYYY Valeur d'année
DATETIME 8 '1000-01-01 00:00:00' à '9999-12-31 23:59:59' YYYY-MM-DD hh:mm:ss Valeur mixte de date et d'heure
TIMESTAMP 4

'1970-01-01 00:00:01' UTC à '2038-01-19 03:14:07' UTC

L'heure de fin correspond à2147483647secondes, heure de Pékin2038-1-19 11:14:07, heure moyenne de Greenwich 03:14:07 le 19 janvier 2038

YYYY-MM-DD hh:mm:ss Valeur mixte de date et d'heure, horodatage

Types de chaînes

Les types de chaînes font référence à CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM et SET. Cette section décrit comment ces types fonctionnent et comment les utiliser dans des requêtes.

Type Size Utilisation
CHAR 0-255 octets Chaîne de longueur fixe
VARCHAR 0-65535 octets Chaîne de longueur variable
TINYBLOB 0-255 octets Chaîne binaire d'au plus 255 caractères
TINYTEXT 0-255 octets Chaîne de texte courte
B 0-65 535 bytes Données texte longues sous forme binaire
TEXT 0-65 535 bytes Données texte longues
MEDIUMBLOB 0-16 777 215 bytes Données texte de longueur moyenne sous forme binaire
MEDIUMTEXT 0-16 777 215 bytes Données texte de longueur moyenne
LONGBLOB 0-4 294 967 295 bytes Données texte très volumineuses sous forme binaire
LONGTEXT 0-4 294 967 295 bytes Données texte de très grande taille

Remarque: Dans char(n) et varchar(n), le n entre parenthèses représente le nombre de caractères, et non le nombre d'octets. Par exemple, CHAR(30) peut stocker 30 caractères.

CHAR et VARCHAR sont similaires, mais ils diffèrent dans leur mode de stockage et de récupération. Ils diffèrent également par la longueur maximale et par la conservation ou non des espaces de fin. Aucune conversion de casse n'est effectuée lors du stockage ou de la récupération.

BINARY et VARBINARY sont similaires à CHAR et VARCHAR, sauf qu'ils contiennent des chaînes binaires plutôt que des chaînes non binaires. C'est-à-dire qu'ils contiennent des chaînes d'octets plutôt que des chaînes de caractères. Cela signifie qu'ils n'ont pas de jeu de caractères, et que le tri et la comparaison sont basés sur les valeurs numériques des octets dans les valeurs de la colonne.

BLOB est un grand objet binaire pouvant contenir une quantité variable de données. Il existe 4 types BLOB : TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB. Ils diffèrent par la plage de stockage qu'ils peuvent accueillir.

Il existe 4 types TEXT : TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT. Correspondant à ces 4 types BLOB, la longueur maximale stockable diffère ; vous pouvez choisir selon la situation réelle.


Types d'énumération et d'ensemble

  • ENUM: Type d'énumération, utilisé pour stocker une seule valeur, où vous pouvez en choisir une dans un ensemble prédéfini.
  • SET: Type d'ensemble, utilisé pour stocker plusieurs valeurs, où vous pouvez en sélectionner plusieurs dans un ensemble prédéfini.

Types de données spatiales

GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION : Utilisés pour stocker des données spatiales (informations géographiques, formes géométriques, etc.).

Autres extensions