Maison >base de données >tutoriel mysql >La différence entre int (10) et int (11) dans MySQL

La différence entre int (10) et int (11) dans MySQL

Guanhui
Guanhuiavant
2020-05-20 13:06:023851parcourir

La différence entre int (10) et int (11) dans MySQL

Je cherchais un emploi récemment, j'ai donc passé des entretiens. Au cours du processus d'entretien, j'ai exposé bon nombre de mes lacunes et j'ai résumé et résumé. La plupart des intervieweurs poseront peut-être des questions sur MySQL telles que l'optimisation des bases de données, la réplication maître-esclave, les index, les moteurs, etc. Alors ce qui me frappe le plus, c'est quelle est la différence entre int (10) et int (11). Cela semble être la question la plus fondamentale, et je ne semble jamais m'en soucier. J’étais un peu confus à l’époque, quelle est la différence ? je n'en ai aucune idée ! Je n'y ai jamais pensé !

Après mon retour chez moi, j'ai rapidement passé en revue les connaissances liées au type de données MySQL. Quelques mots sur les types entiers.

Type de données entier dans MySQL

数据类型 说明 存储需求
tinyint 很小的整数 1 字节
smallint 小的整数 2 字节
mediumint 中等大小的整数 3 字节
int(integer) 普通大小的整数 4 字节
bigint 大整数 8 字节

Plage de valeurs de différents types

数据类型 有符号 无符号
tinyint -128~127 0~255
smallint -32768~32767 0~65535
mediumint -8388608~8388607 0~16777215
int(integer) -2147483648~2147483647 0~4294967295
bigint -9223372036854775808~9223372036854775807 0~18446744073709551615

Largeur d'affichage par défaut de différents types de données

数据类型 默认显示宽度
tinyint 4
smallint 6
mediumint 9
int(integer) 11
bigint 20

* Étant donné que le signe négatif occupe un chiffre, la largeur de chaque type est le chiffre maximum + 1 chiffre. Par exemple, le nombre maximum de chiffres pour tinyint est de 3, plus le signe négatif, donc la largeur d'affichage est de 4.

Alors, quelle est la relation entre la plage de valeurs et la largeur d'affichage ? J'ai fait une expérience en utilisant tinyint. Tout d'abord, j'ai créé un tableau comme suit

mysql> desc test_integer;
+-----------+------------+------+-----+---------+----------------+
| Field     | Type       | Null | Key | Default | Extra          |
+-----------+------------+------+-----+---------+----------------+
| id        | int(11)    | NO   | PRI | NULL    | auto_increment |
| test_id_1 | tinyint(1) | NO   |     | NULL    |                |
| test_id_2 | tinyint(4) | NO   |     | NULL    |                |
+-----------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

J'ai créé deux champs, test_id_1 et test_id_2, de type tinyint signé, avec une largeur d'affichage de 1 et test_id_2, avec une largeur d'affichage. sur 4. Ensuite, j'ai inséré les données, et en même temps j'ai inséré les valeurs - 128, 1 et 127 et j'ai vu ce qui se passe.

mysql> insert into test_integer (test_id_1,test_id_2) values (-128,-128), (1,1), (127,127);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

ok indique que l'insertion est réussie. Interrogons

mysql> select * from test_integer;
+----+-----------+-----------+
| id | test_id_1 | test_id_2 |
+----+-----------+-----------+
|  1 |      -128 |      -128 |
|  2 |         1 |         1 |
|  3 |       127 |       127 |
+----+-----------+-----------+
3 rows in set (0.00 sec)

et le résultat est le même. Après l'expérience ci-dessus, nous tirons la conclusion :

La plage de valeurs. du type entier de largeur d’affichage n’est pas pertinent. La largeur d'affichage spécifie uniquement le nombre maximum de nombres pouvant être affichés par MySQL. Si le nombre de chiffres est inférieur à la largeur spécifiée, il sera rempli d'espaces si une valeur supérieure à la largeur d'affichage est insérée. la valeur ne dépasse pas la plage de valeurs de l'entier de ce type, la valeur Il peut toujours être inséré et affiché.

De même, il n'y a pas de différence entre int (10) et int (11), sauf que la largeur d'affichage est différente. Amis, ne l'oubliez pas.

Tutoriel recommandé : "Tutoriel PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer