详解MySQL数据类型int(M)中M的含义


Posted in Python onNovember 20, 2016

介绍

MySQL 数据类型中的 integer types 有点奇怪。你可能会见到诸如:int(3)、int(4)、int(8) 之类的 int 数据类型。刚接触 MySQL 的时候,我还以为 int(3) 占用的存储空间比 int(4) 要小, int(4) 占用的存储空间比 int(8) 小。

后来,参看 MySQL 手册,发现自己理解错了。

int(M): M indicates the maximum display width for integer types.

在 integer 数据类型中,M 表示最大显示宽度。

原来,在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。说白了,除了显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。

另外,int(M) 只有跟 zerofill 结合起来,才能使我们清楚的看到不同之处。

mysql> drop table if exists t;
mysql> create table t(id int zerofill);
mysql> insert into t(id) values(10);
mysql> select * from t;
+------------+
| id   |
+------------+
| 0000000010 |
+------------+
mysql> alter table t change column id id int(3) zerofill;
mysql> select * from t;
+------+
| id |
+------+
| 010 |
+------+
mysql>
mysql> alter table t change column id id int(4) zerofill;
mysql> select * from t;
+------+
| id |
+------+
| 0010 |
+------+
mysql>
mysql> insert into t(id) values(1000000);
mysql> select * from t;
+---------+
| id  |
+---------+
| 0010 |
| 1000000 |
+---------+

从上面的测试可以看出,“(M)”指定了 int 型数值显示的宽度,如果字段数据类型是 int(4),则:当显示数值 10 时,在左边要补上 “00”;当显示数值 100 是,在左边要补上“0”;当显示数值 1000000 时,已经超过了指定宽度“(4)”,因此按原样输出。

在使用 MySQL 数据类型中的整数类型(tinyint、smallint、 mediumint、 int/integer、bigint)时,非特殊需求下,在数据类型后加个“(M)”,我想不出有何意义。

下面补充一下数据类型

1、整型

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

2、浮点型(float和double)

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节)  m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

3、定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

4、字符串(char,varchar,_text)

MySQL数据类型 含义
char(n)  固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text  可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

5、日期和时间数据类型

MySQL数据类型 含义
date  3字节,日期,格式:2014-09-18
time  3字节,时间,格式:08:42:30
datetime 8字节,日期时间,格式:2014-09-18 08:42:30
timestamp 4字节,自动存储记录修改的时间
year  1字节,年份

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
Python映射拆分操作符用法实例
May 19 Python
Python引用模块和查找模块路径
Mar 17 Python
详解supervisor使用教程
Nov 21 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
快速了解python leveldb
Jan 18 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Django重设Admin密码过程解析
Feb 10 Python
python如何编写win程序
Jun 08 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python Pandas常用函数方法总结
Jun 15 Python
python制作websocket服务器实例分享
Nov 20 #Python
Flask框架的学习指南之用户登录管理
Nov 20 #Python
Flask框架的学习指南之制作简单blog系统
Nov 20 #Python
Flask框架的学习指南之开发环境搭建
Nov 20 #Python
Python 描述符(Descriptor)入门
Nov 20 #Python
独特的python循环语句
Nov 20 #Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
Nov 19 #Python
You might like
DC动漫人物排行
2020/03/03 欧美动漫
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
JavaScript判断变量是对象还是数组的方法
2014/08/28 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
javascript每日必学之多态
2016/02/23 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
vue组件学习教程
2017/09/09 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
分析Python中解析构建数据知识
2018/01/20 Python
python实现推箱子游戏
2020/03/25 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
Python如何实现爬取B站视频
2020/05/20 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
UNIX命令速查表
2012/03/10 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
抽样调查项目计划书
2014/04/24 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技