Mysql tinyint(1)与tinyint(4)的区别是什么
本篇内容介绍了“Mysql tinyint(1)与tinyint(4)的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
什么是tinyint(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)的区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341