Mysql tinyint(1)与tinyint(4)的区别是什么

什么是%ignore_a_1%(M)?

先来了解下mysql中字符串类型varchar(m) 和数值类型tinyint(m) 的区别
字符串列类型: varchar(m) 而言,m 是字段中可以存储的最大字符长度,也就是说是字段长度。根据设置,当你插入超出字段长度的数据时,你很可能会收到错误提示,即使没有收到错误提示,你插入的数据也会被自动截断以适应该字段的预定义长度。所以,varchar(20) 和 varchar(40) 是不同的,其真实反映了该字段可以存储的数据长度
数值列类型:其长度修饰符表示最大显示宽度,与该字段物理存储没有任何关系。也就是说,tinyint(1) 和 tinyint(4) 能够存储的数值范围都是-128…127 (or for unsigned values 0…255),他们是相同的数据类型,当然他们还是有一点差异,以下会有说明。
对于 tinyint 数据类型,只占 1 个字节

– 无符号的(unsigned),范围是 0 到 255,默认长度是 3。- 有符号的(signed),范围是 -128 到 127,默认长度是 4。

范围算法:tinyint占1个字节,一个字节 8 位,也就是1*8=8,可以表示的数字个数是 2的 8 次方(2^8 = 256个数字)。

区别:若使用了 zerofill,当实际长度达不到指定的显示长度时,就会用 0 在前面补齐。(简记zerofill作用就是补零)

测试

先创建一张测试表,对 tinyint 类型都使用 zerofill。

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;

然后,插入测试数据。

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);

最后,查询数据表中的数据。

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)
mysql> SELECT *,LENGTH(id),LENGTH(unsigned_t),LENGTH(t1) FROM pre_demo;+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+| id | unsigned_t | signed_t | t1  | t2  | t3  | t4   | t5    | LENGTH(id) | LENGTH(unsigned_t) | LENGTH(t1) |+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+|  1 |        008 |     0008 |   8 |  08 | 008 | 0008 | 00008 |          1 |                  3 |          1 ||  2 |        123 |     0123 | 123 | 123 | 123 | 0123 | 00123 |          1 |                  3 |          3 |+----+------------+----------+-----+-----+-----+------+-------+------------+--------------------+------------+2 rows in set (0.00 sec)

以上就是Mysql tinyint(1)与tinyint(4)的区别是什么的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/149405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月3日 01:32:09
下一篇 2025年12月3日 01:32:20

相关推荐

发表回复

登录后才能评论
关注微信