Maison  >  Article  >  base de données  >  Quelle est la différence entre Mysql tinyint(1) et tinyint(4)

Quelle est la différence entre Mysql tinyint(1) et tinyint(4)

WBOY
WBOYavant
2023-06-01 08:31:32998parcourir

Qu'est-ce que tinyint(M) ?

Tout d'abord, comprenons la différence entre le type chaîne varchar(M) et le type numérique tinyint(M) dans MySQL ?
Type de colonne de chaîne : en termes de varchar(M), M est la longueur maximale des caractères qui peut être stockée dans le champ, qui est la longueur du champ. Selon les paramètres, vous recevrez probablement une erreur lorsque vous insérez des données dépassant la longueur du champ, et même si vous ne recevez pas d'erreur, les données que vous insérez seront automatiquement tronquées pour s'adapter à la longueur prédéfinie du champ. Par conséquent, varchar(20) et varchar(40) sont différents, ce qui reflète véritablement la longueur des données que le champ peut stocker .
Type de colonne numérique : Son modificateur de longueur représente la largeur d'affichage maximale et n'a rien à voir avec le stockage physique du champ. En d'autres termes, la plage numérique que tinyint(1) et tinyint(4) peuvent stocker est toutes deux de -128...127 (ou pour les valeurs non signées 0...255). Il s'agit bien sûr du même type de données. , ils ont encore une petite différence. Il y aura des instructions ci-dessous. Pour le type de données tinyint
, il n'occupe que 1 octet :

- non signé (non signé), la plage est de 0 à 255, la longueur par défaut est de 3.
- signé, la plage est de -128 à 127, la longueur par défaut est 4.


Algorithme de plage

 : tinyint occupe 1 octet, et un octet fait 8 bits, soit 1*8=8. Le nombre de nombres pouvant être représentés est de 2 à la puissance 8 (2^8 = 256 nombres. ) .

Différence

 : Si zerofill est utilisé, lorsque la longueur réelle n'atteint pas la longueur d'affichage spécifiée, elle sera complétée par 0 devant. (La fonction de zerofill en bref est de remplir des zéros)Test

Créez d'abord une table de test et utilisez zerofill pour tous les types tinyint.

CREATE TABLE `pre_demo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0',
  `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00',
  `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000',
  `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Ensuite, insérez les données du test.

NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8);
INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);

Enfin, interrogez les données dans la table de données.

mysql> SELECT * FROM pre_demo;
+----+------------+----------+-----+-----+-----+------+-------+
| id | unsigned_t | signed_t | t1  | t2  | t3  | t4   | t5    |
+----+------------+----------+-----+-----+-----+------+-------+
|  1 |        008 |     0008 |   8 |  08 | 008 | 0008 | 00008 |
|  2 |        123 |     0123 | 123 | 123 | 123 | 0123 | 00123 |
+----+------------+----------+-----+-----+-----+------+-------+
2 rows in set (0.00 sec)
rrree

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