Mysql 中 int(3) 和 int(11) 的区别
【1】int(3) 和 int(11)的区别(思维惯性认知错误)
这里的3或11代表的是存储在数据库中的具体的长度,总以为int(3)只能存储3个长度的数字,int(11)只会存储11个长度的数字。
【2】Mysql基础知识
学习Mysql基本数据类型时,我们已知:
从声明字段是int类型的那一刻起,int类型的字段就是占四个字节,一个字节8位,也就是4*8=32位。
因此,可以表示的数字个数是2的32次方(2^32 = 4294 9672 96个数字)
而4294 9672 96个数字也就是[0, 4294967295],当然,如果区分正负号的话所存的数值会比较小。
另外,zerofill属性的作用:
(1)插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应长度的0
(2)zerofill默认为int(10)
(3)当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍。
例如,有符号为[-2147483648,2147483647],无符号为[0, 4294967295]。
【3】SQL学习实例
(1)SQL语句
-- 本地Mysql版本V8.0.12
-- --------------------------BEGIN ZEROFILL-----------------
-- [1]存在先删除
DROP TABLE students;
-- [2]创建表
CREATE TABLE `students` (
`sId` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`sName` VARCHAR(100) NOT NULL,
`sAge` INT(2) ZEROFILL NOT NULL,
`sAddr` VARCHAR(200) DEFAULT NULL,
`sGrade` INT(2) DEFAULT NULL,
`sStuId` INT(8) DEFAULT NULL,
`sSex` INT(1) UNSIGNED DEFAULT NULL,
`sReverse_00` INT(10) ZEROFILL DEFAULT NULL,
`sReverse_01` INT(11) UNSIGNED DEFAULT NULL,
`sReverse_02` INT(11) ZEROFILL UNSIGNED DEFAULT NULL,
PRIMARY KEY (`sId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
-- [3]插入源数据
INSERT INTO
students(sName, sAge, sAddr, sGrade, sStuId, sSex, sReverse_00, sReverse_01, sReverse_02)
VALUES
('wangchao', 8, 'heyang', 3, 1803111, 0, 4294967296, 4294967296, 4294967296),
('suntao', 9, 'weinan', 6, 1806110, 1, 4294967296, 4294967296, 4294967296),
('liuyan', 16, 'hancheng', 8, 20190811, 0, 4294967296, 4294967296, 4294967296),
('xuhui', 22, 'hancheng', 12, 201912107, 1, 42949672969, 4294967296, 4294967296);
-- [4]查询数据信息
SELECT sId, sName, sAge, LENGTH(sAge) AS len_Age, sAddr,
sGrade, LENGTH(sGrade) AS len_Grade,
sStuId, LENGTH(sStuId) AS len_StuId,
sSex,
sReverse_00, LENGTH(sReverse_00) AS len_Reverse00,
sReverse_01, LENGTH(sReverse_01) AS len_Reverse01,
sReverse_02, LENGTH(sReverse_02) AS len_Reverse02
FROM students;
-- [5]查询数据长度
SELECT sId, sName, sAge, LENGTH(sAge) AS len_Age FROM students;
SELECT sId, sName, sGrade, LENGTH(sGrade) AS len_Grade FROM students;
SELECT sId, sName, sStuId, LENGTH(sStuId) AS len_StuId FROM students;
SELECT sId, sName, sReverse_02, LENGTH(sReverse_02) AS len_Reverse02 FROM students;
-- --------------------------END ZEROFILL-----------------
(2)查询结果数据集

(3)结果分析
其实,当我们在选择使用int类型时,不论是选择int(3)还是int(11),它在数据库里面存储的都是4个字节的长度。
只不过在使用int(3)且加zerofill属性时,如果你输入的数值是17,系统会默认为你存储值为017,什么意思呢?
即就是说,这个3代表的仅是一个默认的长度,当不足3位时,系统会帮用零补全,当超过3位时,就没有任何的影响与副作用。
两者之间除了在存储的时候稍微有点区别外,当我们在使用数据时是没有任何差异的。
实际中,要看出两者的不同效果,需要在创建表时字段类型后加zerofill这个属性,表示用0填充,否则是看不出效果的。
因为通常我们在创建数据库表字段时都不会加入这个属性,所以可以说两者之间是没有区别的。
综上所述:只可能对数据存储有差异。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
Mysql 中 int(3) 和 int(11) 的区别的更多相关文章
- mysql中 drop、truncate和delete的区别
mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...
- mysql中的where和having子句的区别
mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...
- MySQL中char、varchar和text的区别
三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...
- mysql中 REPLACE INTO 和 INSERT INTO 的区别
mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...
- MySQL中TEXT与BLOB字段类型的区别
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下 在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...
- MySql中的tinying,smallint,int,bigint的类型介绍——转载
tinyint 从 0 到 255 的整型数据.存储大小为 1 字节. smallint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据.存储大小为 2 个字节 ...
- MySQL 中隔离级别 RC 与 RR 的区别
1. 数据库事务ACID特性 数据库事务的4个特性: 原子性(Atomic): 事务中的多个操作,不可分割,要么都成功,要么都失败: All or Nothing. 一致性(Consistency): ...
- mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别
在mysql中存在着各种utf8编码格式,如下表: 1)utf8_bin 2)utf8_general_ci 3)utf8_general_cs utf8_bin将字符串中的每一个字符用二进制数据存储 ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- 浅谈mysql中varchar(m)与char(n)的区别与联系
mysql建表长度的限制 在mysql建表时,出现以下报错信息: 错误一:行大小过大,所使用的表这种类型的最大的行大小,不算BLOB类型,是65535.(这是我翻译的) 原因是MySQL在建表的 ...
随机推荐
- Eclipse中将java类打成jar包形式运行
记录一次帮助小伙伴将java类打成jar包运行 1.创建java project项目 file > new > project > java project 随便起一个项目名称,fi ...
- Xamarin.Forms之样式
使用XAML样式设置Xamarin.Forms应用的样式Xamarin.Forms应用程序的样式传统上是通过使用Style类将一组属性值分组到一个对象中来完成的,然后可以将其应用于多个视觉元素实例. ...
- webpack打包vue单文件组件
一.vue单文件组件 ①文件扩展名为 .vue 的 就是single-file components(单文件组件) ②参考文档:单文件组件 二.webpack加载第三方包 ①项目中,如果需要用到一些第 ...
- 洛谷 p1968 美元汇率 题解
传送门 美元由马克转化,马克由美元转化 求最大美元 每一天只有2种选择 ①:不转化另一货币 ②:转化另一货币 典型01背包 可以开一个二维数组f[100][3] F[i][1]表示前i天获得最大美元 ...
- js中的逗号运算符
逗号运算符 逗号运算符是二元运算符,它的操作数可以是任意类型.它首先计算左操作数,然后计算右操作数,最后返回右操作数的值,用逗号运算符可以在一条语句中执行多个运算 作用: 1.在一条语句中从左到右执行 ...
- 洛谷P2949题解
若想要深入学习反悔贪心,传送门. Description: 有 \(n\) 项工作,每 \(i\) 项工作有一个截止时间 \(D_i\) ,完成每项工作可以得到利润 \(P_i\) ,求最大可以得到多 ...
- 理解 IO_WAIT 并且了解利用包括 top htop iotop iostat 工具来查看 IO 性能
今天继续拜读「深入浅出计算机组成原理」专栏,觉得讲 IO_WAIT 这篇很有意思,正好可以结合前面的一篇讲物理硬件存速度的一块儿看. 现在我们看硬盘厂商出品的性能报告,通常会看到两个指标,一个是响应时 ...
- hotspot的内存
java memory主要分heap memory 和 non-heap memory,其计算公式如下: Max memory = [-Xmx] + [-XX:MaxPermSize] + numbe ...
- vue中使用时间插件、vue使用laydate
<input id="time1" readonly="readonly" placeholder="这里选择时间" v-model= ...
- 【Beta阶段】第九次Scrum Meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #66 修改登录注册按钮https://github.com/rRetr0Git/rateMyCourse/issues/66 #69 后端 ...