Lors de la configuration d’une base de données dans MySQL, l’utilisateur doit attribuer un nom et un type de données à chaque colonne d’une table. Ce processus permet au système de comprendre précisément quel type de données sera stocké et comment elles seront traitées, tout en déterminant la quantité de mémoire requise.
Il existe plusieurs grandes catégories de types de données dans les tables MySQL, notamment les types numériques, les types de caractères, les types de date et d’heure, ainsi que d’autres. Chaque catégorie contient plusieurs types de données spécifiques. Il est important de les définir correctement dès la phase initiale de création des tables afin d’éviter des problèmes une fois la structure complète de la base de données mise en place.
Cet article décrit les principaux types de données MySQL, leur structure, leurs valeurs valides et les recommandations d’utilisation.
MySQL prend en charge tous les types de données numériques SQL standard, utilisés pour stocker des nombres. Cet article couvre :
Les entiers
Les nombres à virgule flottante
Les nombres à virgule fixe
Chacun est décrit plus en détail ci-dessous.
Les entiers sont utilisés pour stocker des nombres entiers signés ou non signés. Les types signés peuvent stocker des valeurs positives et négatives, tandis que les types non signés stockent uniquement des valeurs positives, ce qui double effectivement la plage de valeurs.
Il existe cinq principaux types d’entiers : TINYINT, SMALLINT, MEDIUMINT, INT et BIGINT. La principale différence réside dans la plage de valeurs qu’ils peuvent stocker : plus la plage est large, plus la mémoire requise est importante. Il est essentiel de choisir le type approprié afin d’optimiser l’utilisation de la mémoire lors de la création des tables.
|
Type |
Mémoire (octets) |
Plage signée |
Plage non signée |
|
TINYINT |
1 |
−2⁷ à 2⁷−1 |
0 à 2⁸−1 |
|
SMALLINT |
2 |
−2¹⁵ à 2¹⁵−1 |
0 à 2¹⁶−1 |
|
MEDIUMINT |
3 |
−2²³ à 2²³−1 |
0 à 2²⁴−1 |
|
INT |
4 |
−2³¹ à 2³¹−1 |
0 à 2³²−1 |
|
BIGINT |
8 |
−2⁶³ à 2⁶³−1 |
0 à 2⁶⁴−1 |
La spécification d’une taille (par exemple MEDIUMINT(6)) n’affecte pas la plage de valeurs. Elle est purement esthétique et utilisée par certains outils pour compléter les nombres plus courts avec des espaces.
Vous pouvez également utiliser l’attribut ZEROFILL pour compléter avec des zéros au lieu d’espaces. Par exemple, SMALLINT(8) ZEROFILL affichera 256 sous la forme 00000256.
Ils sont utilisés pour stocker des valeurs numériques approximatives. MySQL permet de définir la précision de la manière suivante :
FLOAT(p)
Où p correspond à la précision, comprise entre 0 et 53.
Si p < 25, FLOAT (précision simple) est utilisé.
Sinon, DOUBLE (précision double) est utilisé.
|
Type |
Mémoire (octets) |
Plage de valeurs |
|
FLOAT |
4 |
~±3,4028 × 10³⁸ |
|
DOUBLE |
8 |
~±1,7976 × 10³⁸ |
Ils sont utilisés pour stocker des valeurs exactes avec une précision définie. Les types DECIMAL ou NUMERIC sont utilisés, en particulier pour les calculs financiers où l’arrondi est inacceptable.
Définition :
DECIMAL(M, D)
M : nombre total de chiffres (jusqu’à 65 ; valeur par défaut 10)
D : nombre de chiffres après la virgule (0–30 ; valeur par défaut 0)
Exemple :
DECIMAL(6, 3)
Stocke des valeurs de -999.999 à 999.999.
DECIMAL et NUMERIC sont fonctionnellement équivalents.
Conçus pour stocker des textes courts, les types de données de caractères dans MySQL incluent CHAR et VARCHAR. Ils sont similaires, mais diffèrent par la manière dont les données sont stockées et récupérées.
CHAR stocke une chaîne de longueur fixe (de 0 à 2⁸−1 caractères), définie lors de la création de la table. Si une chaîne plus courte est insérée, les caractères restants sont complétés par des espaces.
VARCHAR stocke une chaîne de longueur variable (de 0 à 2¹⁶−1 caractères). Contrairement à CHAR, il stocke uniquement le nombre réel de caractères et utilise 1 octet supplémentaire pour enregistrer la longueur de la chaîne.
Si la chaîne d’entrée dépasse la longueur définie pour CHAR ou VARCHAR, elle est tronquée.
Lors de la création de la table, si des colonnes CHAR et VARCHAR sont combinées, MySQL convertira automatiquement CHAR en VARCHAR.
|
Chaîne |
CHAR(5) |
VARCHAR(5) |
|
'A' |
'A ' |
'A' |
|
'Hello' |
'Hello' |
'Hello' |
|
'Example' |
'Examp' |
'Examp' |
Le type TEXT est utilisé pour stocker de grandes quantités de texte, tandis que BLOB est conçu pour les données binaires telles que les images, le code compilé ou l’audio.
Principales différences :
BLOB : le tri et les comparaisons sont sensibles à la casse.
TEXT : le tri et les comparaisons ne sont pas sensibles à la casse.
MySQL ne peut pas indexer la longueur complète des champs TEXT ou BLOB et ne prend pas en charge le tri à l’aide d’index de champ complet.
Si la longueur de la chaîne dépasse la taille maximale autorisée, l’entrée est tronquée.
|
Type |
Mémoire (octets) |
Caractères max. |
|
TINYTEXT |
2⁸−1 |
jusqu’à 2⁸−1 |
|
TEXT |
2¹⁶−1 |
jusqu’à 2¹⁶−1 |
|
MEDIUMTEXT |
2²⁴−1 |
jusqu’à 2²⁴−1 |
|
LONGTEXT |
2³²−1 |
jusqu’à 2³²−1 |
|
Type |
Mémoire (octets) |
Octets max. |
|
TINYBLOB |
2⁸−1 |
jusqu’à 2⁸−1 |
|
BLOB |
2¹⁶−1 |
jusqu’à 2¹⁶−1 |
|
MEDIUMBLOB |
2²⁴−1 |
jusqu’à 2²⁴−1 |
|
LONGBLOB |
2³²−1 |
jusqu’à 2³²−1 |
MySQL fournit plusieurs types de données pour stocker des informations de date et d’heure :
|
Type |
Mémoire (octets) |
Description |
|
DATE |
3 |
Stocke uniquement la date au format YYYY-MM-DD. |
|
DATETIME |
8 |
Stocke la date et l’heure au format YYYY-MM-DD HH:MM:SS. |
|
TIMESTAMP |
4 |
Similaire à DATETIME, mais avec une plage plus limitée (1970–2038). |
|
TIME |
3 |
Stocke uniquement l’heure, de −838:59:59 à 838:59:59. |
|
YEAR |
1 |
Stocke uniquement l’année au format YYYY. |
MySQL prend en charge un type de données JSON natif depuis la version 5.7.8, offrant les avantages suivants :
Validation automatique des données JSON.
Format de stockage binaire optimisé pour un accès et des requêtes plus rapides.
La mémoire requise est approximativement équivalente à LONGTEXT.
MySQL propose des types de chaînes spéciaux qui stockent des valeurs à partir d’un ensemble fixe prédéfini : ENUM et SET.
ENUM stocke une seule valeur de la liste et utilise jusqu’à 2 octets de mémoire.
SET peut stocker jusqu’à 26 valeurs simultanément et utilise jusqu’à 8 octets de mémoire.
ENUM('a', 's', 'd')
La colonne ne peut contenir qu’une seule des valeurs suivantes : 'a', 's' ou 'd'.
SET('a', 's', 'd')
La colonne peut contenir n’importe quelle combinaison des valeurs listées, notamment :
'a', 's', 'd', 'a,s', 'a,d', 's,d', 'a,s,d' ou un ensemble vide ('').
Si un utilisateur insère une valeur telle que ('a', 's', 'a') dans un SET, MySQL supprime automatiquement les doublons et trie les valeurs selon l’ordre de déclaration initial. La valeur stockée sera alors 'a,s'.
Cet article a présenté les types de données MySQL les plus couramment utilisés pour définir les colonnes des tables. Grâce à ces connaissances, les utilisateurs peuvent sélectionner les types appropriés et concevoir efficacement la structure de leur base de données. Pour des types de données plus détaillés et moins courants, veuillez consulter la documentation officielle de MySQL.
Vous pouvez utiliser les bases de données cloud Hostman pour vous entraîner à travailler avec MySQL et ses différents types de données. Les principaux avantages de l’utilisation de MySQL dans le cloud incluent:
Maintenance et configuration de la base de données par le fournisseur de services
Fiabilité élevée, haute disponibilité et tolérance aux pannes
Sauvegardes automatiques
Mise à l’échelle horizontale et verticale rapide
Fonctionnement continu grâce à la réplication en cluster
Exécution de la base de données sur les ressources de calcul d’une plateforme cloud