我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅谈Mysql tinyint(1)与tinyint(4)的区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅谈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)

总结

  • tinyint(1) 与 tinyint(4) 能够存储的数据范围是一样的,都是 0 到 255(无符号的)。区别在于,当使用 zerofill 时,查询结果显示的长度可能不同。
  • zerofill 和 指定长度配合使用,可用于统一数据的显示长度,比如在数据库层面快速生成统一长度的流水号。
  • 一般情况下,无须刻意指定整型数据类型的长度。使用 MySQL 的默认长度tinyint(4) 即可。

参考文献

http://blog.darkmi.com/2016/06/24/3110.html

https://blog.csdn.net/lamp_yang_3533/article/details/100061678

到此这篇关于浅谈Mysql tinyint(1)与tinyint(4)的区别的文章就介绍到这了,更多相关Mysql tinyint(1)与tinyint(4)内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅谈Mysql tinyint(1)与tinyint(4)的区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

浅谈Mysql tinyint(1)与tinyint(4)的区别

本文主要介绍了浅谈Mysql tinyint(1)与tinyint(4)的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-20

浅谈Mysql tinyint(1)与tinyint(4)的区别

目录引言什么是tinyint(M)?测试总结参考文献引言借由本篇文章来探讨下在mysql数据库中数值类型tinyint(1)和tinyint(4) 有啥区别呢?什么是tinyint(M)?先来了解下mysql中字符串类型varchar
2023-03-20

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

本篇内容介绍了“Mysql tinyint(1)与tinyint(4)的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是tin
2023-07-05

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

这篇文章主要介绍了Mysql中tinyint(1)和tinyint(4)的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. varchar(M)和数值类型tiny
2023-06-29

在 MySQL 中使用 INT(1) 与 TINYINT(1) 有区别吗?

括号中使用的数字1仅用于宽度显示。 INT(1)和TINYINT(1)不影响存储。TINYINT占用1个字节,这意味着它的范围是-128到+127,而int占用4个字节;它的范围是 -2147483648 到 +2147483647要了解宽
2023-10-22

Mysql中tinyint与int的区别有哪些

这篇文章主要介绍了Mysql中tinyint与int的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题:int(1) 和 tinyint(1) 有什么区别呢?像这
2023-06-22

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------    

	mysql中int、bigint、smallint和tinyint的区别与长度
2020-01-02

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------    
mysql中int、bigint、smallint和tinyint的区别与长度
2019-08-08

mysql中int、bigint、smallint 和 tinyint的区别

在MySQL中,int、bigint、smallint和tinyint是不同的整数数据类型,具有不同的取值范围和存储空间。1. int(整数):int是MySQL中最常用的整数类型,默认情况下占据4个字节的存储空间,可以存储范围为-2,14
2023-08-09

mysql中int、bigint、smallint和tinyint的区别是什么

在MySQL中,int、bigint、smallint和tinyint是不同的整数数据类型,它们之间的区别如下:1. int:int是整数数据类型中的默认选择,占用4个字节(32位),可以存储范围为-2147483648到214748364
2023-08-15

mysql中int、bigint、smallint 和 tinyint的区别详细介绍

在MySQL中,int、bigint、smallint和tinyint都是整数数据类型,它们之间的区别主要体现在取值范围和存储空间上。1. int:int是整数数据类型中最常用的类型,占据4个字节(32位),取值范围为-2,147,483,
2023-08-14

浅谈JSP serverlet的区别与联系

JSP(JavaServer Pages)和Servlet都是Java Web开发中的关键技术,用于构建动态Web应用程序。它们之间有以下区别和联系:区别:1. JSP主要用于在HTML页面中嵌入Java代码,通过JSP标签和表达式来实现动
2023-08-15

浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

首先从字面意思理解两个词 onTouchEvent:触发触摸事件 onInterceptTouchEvent:触发拦截触摸事件 通过查看源代码及类继承关系 onInterceptTouchEvent:是定义于ViewGroup里面的一个方法
2022-06-06

浅谈spring和spring MVC的区别与关系

spring是一个开源框架,功能主要是依赖注入和控制反转。依赖注入有三种形式1、构造注入(bytype)2、setter注入3、接口注入(byname) 而控制反转则主要是起到操控作用,把对象的创建,初始化,销毁交给spring容器来处理。
2023-05-31

编程热搜

目录