Maison >base de données >tutoriel mysql >Quelle est la différence entre Mysql tinyint(1) et tinyint(4)
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 :
- 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
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!