Maison > base de données > tutoriel mysql > le corps du texte

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

WBOY
Libérer: 2023-06-01 08:31:32
avant
1120 Les gens l'ont consulté

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;
Copier après la connexion

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);
Copier après la connexion

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)
Copier après la connexion
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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal