浅谈Mysql tinyint(1)与tinyint(4)的区别
作者:尖子塔 发布时间:2024-01-14 10:10:39
引言
借由本篇文章来探讨下在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)
来源:https://huaweicloud.csdn.net/63357991d3efff3090b58552.html


猜你喜欢
- 前言Iframe 是一种将网页嵌入到另一个页面的内容中的方法。这是通过使用 HTML 元素、外部网站的 URL 以及窗口在您的网站上的外观参
- 一、前言在项目开发中,数据库应用必不可少。虽然数据库的种类有很多,如SQLite、MySQL、Oracle等,但是它们的功能基本是一样都是一
- Instr函数与InstrRev函数大家都应该很熟悉,但是如果你看过《ASP * 站开发实践教程》,你应该注意一下。该书中介绍它们时是很有迷
- 这篇文章主要介绍了wxpython自定义下拉列表框过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命
- asp编程手工定义参数的方法: Dim con As ADODB.Connection
- 1、创建方法:方法一:create table TempTableName或select [字段1,字段2,...,] into TempT
- 1.电脑已经搭建python环境2.深入到需要传输的文件目录下,此处以分享 nemo-huiyuanfei 文件为例3.在路径栏输入 cmd
- 学习了一天的深度学习,略有疲惫,我们用pygame搞个小游戏放松放松吧。今天我们的游戏主体是烟雨蒙蒙下彩虹雨,仿佛置身江南水乡。游戏描述我们
- 本文实例为大家分享了js随机点名器的具体代码,供大家参考,具体内容如下<html lang="zh"><
- 写在前面其实我之前写过一个简单的识别手写数字的程序,但是因为逻辑比较简单,而且要求比较严苛,是在50x50大小像素的白底图上手写黑色数字,并
- 目录前言typeof是否能正确判断类型?instanceof是否能正确判断类型?Object.prototype.toString.call
- 拼音类文件py_class.php源码如下:<?php class py_class{ function py_class(){
- 一、异步的“并行”同时处理,相互之间没啥依赖// 执行FN1返回一个promise实例,实例中管理了
- 所有标准的序列操作对字符串都适用,但字符串是不可变的字符串常量:单引号:‘spa"m'双引号:"spa'
- 本文实例讲述了Python 文件管理的方法。分享给大家供大家参考,具体如下:一、Python中的文件管理文件管理是很多应用程序的基本功能和重
- 临时表可能是非常有用的,在某些情况下,保持临时数据。最重要的是应该知道的临时表是,他们将当前的客户端会话终止时被删除。临时表中添加MySQL
- vue项目运行或打包,频繁内存溢出Vue项目运行或打包时,频繁内存溢出情况CALL_AND_RETRY_LAST Allocation fa
- 导言到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别在教程第一和第二章提到。在Di
- 在已知DICOM和三维模型对应掩膜的情况下,计算三维模型的体积。思路:1、计算每个体素的体积。每个体素为长方体,x,y为PixelSpaci