已解决
Mysql tinyint(1)与tinyint(4)的区别
来自网友在路上 167867提问 提问时间:2023-09-28 09:08:17阅读次数: 67
最佳答案 问答题库678位专家为你答疑解惑
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)
总结
- tinyint(1) 与 tinyint(4) 能够存储的数据范围是一样的,都是 0 到 255(无符号的)。区别在于,当使用 zerofill 时,查询结果显示的长度可能不同。
- zerofill 和 指定长度配合使用,可用于统一数据的显示长度,比如在数据库层面快速生成统一长度的流水号。
- 一般情况下,无须刻意指定整型数据类型的长度。使用 MySQL 的默认长度tinyint(4) 即可。
查看全文
99%的人还看了
相似问题
- Python入门教学——输入任意长度的int整型一维数组
- 关于js中数组push之后长度明明有但是获取长度和随意的数组下标的时候不正常的问题
- 【Excel】补全单元格值变成固定长度
- [POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)
- leetcode_2609 最长平衡字符串长度
- LLMs:大语言模型的核心技术之上下文窗口长度技术的简介(核心技术拆解)、发展历史、案例应用之详细攻略
- LeetCode:318. 最大单词长度乘积(C++)
- 【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
- LeetCode 318. 最大单词长度乘积
- 【教3妹学编程-算法题】最大单词长度乘积
猜你感兴趣
版权申明
本文"Mysql tinyint(1)与tinyint(4)的区别":http://eshow365.cn/6-15113-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!