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