1. Introduction
MySQL est un système de gestion de base de données relationnelle populaire, largement utilisé dans de nombreuses applications web et systèmes de base de données. Parmi ses types de données, le type INT est l’un des plus couramment utilisés pour gérer les valeurs numériques. Cet article fournit une explication détaillée du type INT de MySQL. En particulier, nous explorerons les valeurs maximales prises en charge par le type INT et comment l’utiliser efficacement. En lisant cet article, vous acquerrez les connaissances nécessaires pour utiliser correctement le type INT dans MySQL.
2. Basic Specifications of the INT Type
Maximum and Minimum Values of INT
Le type INT de MySQL utilise 4 octets (32 bits) de stockage, et la plage de valeurs qu’il peut stocker est la suivante :
- Signé (SIGNED) :
- Valeur minimale : -2,147,483,648
- Valeur maximale : 2,147,483,647
- Non signé (UNSIGNED) :
- Valeur minimale : 0
- Valeur maximale : 4,294,967,295
Storage Size of INT
Le type INT utilise toujours 4 octets de stockage. Cette taille reste constante indépendamment de la valeur stockée. Par conséquent, si vous n’avez pas besoin de gérer une plage numérique très large, il est plus efficace d’envisager des types de données plus petits (par exemple, TINYINT ou SMALLINT).
Use Cases for INT
Le type INT est couramment utilisé dans les scénarios suivants :
- Valeurs d’auto-incrémentation (par ex., ID d’utilisateurs, numéros de commande)
- Données entières utilisées dans les calculs ou le traitement statistique (par ex., comptes d’inventaire, comptes de clics)
- Données représentées dans une plage fixe (par ex., âge ou scores de test)
Dans ces cas d’utilisation, il est important de considérer la plage numérique requise et l’efficacité mémoire.
3. What Does M Mean in INT(M)?
What Is Display Width (M)?
En MySQL, le M dans INT(M) représente la « largeur d’affichage ». Il n’affecte pas la valeur numérique réelle stockée dans la base de données ; au lieu de cela, il spécifie comment la valeur est formatée lors de l’affichage. Par exemple, si défini comme INT(5), le nombre sera affiché avec une largeur de 5 chiffres.
Cependant, la largeur d’affichage M n’a de sens que dans le cas suivant :
- Lorsque l’option ZEROFILL est activée
- Exemple : Avec
INT(5) ZEROFILL, si la valeur est123, elle sera affichée comme00123.
Important Notes About ZEROFILL
Lors de l’utilisation de l’option ZEROFILL, les caractéristiques suivantes s’appliquent :
- Des zéros de tête sont automatiquement ajoutés à gauche.
- L’attribut
UNSIGNEDest automatiquement appliqué.
Par conséquent, si vous avez besoin de stocker des valeurs négatives, vous ne pouvez pas utiliser ZEROFILL.
Clearing Up Common Misunderstandings
Beaucoup de débutants croient à tort que M limite la valeur maximale stockable. Cependant, M n’affecte que le formatage d’affichage et n’a absolument aucun impact sur la plage de stockage réelle.
4. Comparison with Other Integer Types
Types of Integer Data Types and Their Ranges
MySQL fournit les types d’entiers suivants :
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Selection Criteria
Utilisez les directives suivantes lors de la sélection d’un type de données approprié dans la conception de base de données :
- Si la plage est petite : Utilisez
TINYINTouSMALLINTpour économiser de la mémoire. - Si une plage extrêmement large est requise : Utilisez
BIGINT. - Si une utilisation générale est souhaitée :
INTest généralement optimal.
5. Changes Since MySQL 8.0.17
Deprecation of Display Width (M)
À partir de MySQL 8.0.17, la « largeur d’affichage (M) » pour les types d’entiers a été dépréciée. Ce changement a été introduit avec la dépréciation de l’option ZEROFILL, et il peut être supprimé dans les futures versions de MySQL.
Les raisons de la dépréciation de la largeur d’affichage sont les suivantes :
- A causé des malentendus :
- Beaucoup d’utilisateurs ont mal compris que
Maffectait la valeur maximale stockable ou le nombre de chiffres.
- Utilisation pratique limitée :
- Puisque
Mne contrôlait que le formatage d’affichage, le formatage est maintenant couramment géré du côté de l’application, réduisant sa nécessité.
Deprecation of ZEROFILL
L’option ZEROFILL a également été dépréciée dans la même version. Bien que ZEROFILL soit pratique pour remplir les nombres avec des zéros initiaux, elle n’est plus recommandée pour les raisons suivantes :
- Approches alternatives répandues :
- Le remplissage de zéros peut désormais être facilement géré dans la couche application ou interface utilisateur.
- Éviter la confusion :
- L’application automatique de l’attribut
UNSIGNEDlors de l’utilisation de `ZEROFILL provoquait de la confusion chez les utilisateurs débutants.
Comment s’adapter à la dépréciation
En réponse à ces dépréciations, envisagez les approches suivantes dans la conception de bases de données :
- Gérer le formatage dans la couche application :
- Effectuer le remplissage de zéros et le formatage dans la couche application ou présentation.
- Exemple : implémenter le remplissage de zéros avec PHP ou JavaScript.
- Adopter une conception qui ne dépend pas de la largeur d’affichage :
- Définir le type
INTsans spécifierMet se concentrer sur l’exactitude des données plutôt que sur le format d’affichage.
6. Section FAQ pratique
Questions fréquemment posées
Q1. Que se passe-t-il si je stocke une valeur dépassant le maximum du type INT ?
A. Dans MySQL, tenter de stocker une valeur en dehors de la plage du type INT entraînera une erreur. Vous devez soit choisir une valeur dans la plage prise en charge, soit passer à un type de données avec une plage plus grande (par exemple, BIGINT).
Q2. Quelle est la différence entre INT et BIGINT ?
A. Le type BIGINT utilise deux fois le stockage de INT (8 octets) et offre une plage numérique beaucoup plus large. Par exemple, la plage signée de BIGINT dépasse ±9 quintillions, ce qui le rend adapté à la gestion de jeux de données très volumineux.
Q3. Après la dépréciation de ZEROFILL, comment devrais-je implémenter un affichage avec des zéros en tête ?
A. Il est recommandé de gérer le remplissage de zéros dans la couche application. Par exemple, en PHP vous pouvez utiliser la fonction str_pad(), et en JavaScript la méthode padStart() pour implémenter le remplissage de zéros.
Q4. Comment devrais-je choisir entre INT et les autres types d’entiers ?
A. Sélectionnez le type en fonction de la plage de données. Les petites valeurs numériques (par exemple, l’âge ou les scores) conviennent au TINYINT, les données de taille moyenne (par exemple, les identifiants d’utilisateur) conviennent au INT, et les très grandes valeurs (par exemple, les données de transactions financières) conviennent au BIGINT.
7. Conclusion
Dans cet article, nous avons fourni une explication détaillée du type de données MySQL INT. Les points clés sont les suivants :
- Comprendre les différences entre les valeurs maximales et minimales signées et non signées du type
INTconstitue la base d’une conception de données appropriée. - Il est important de comprendre les approches alternatives aux options dépréciées « largeur d’affichage (M) » et « ZEROFILL » et de concevoir des bases de données capables de s’adapter aux futures mises à jour de MySQL.
- Sélectionnez le type d’entier approprié en fonction des caractéristiques des données afin de créer une base de données efficace et maintenable.
Utilisez cet article comme référence pour optimiser votre utilisation du type INT et améliorer davantage l’efficacité de la conception de bases de données MySQL.


