详解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逐行读取文件内容的三种方法
Jan 20 Python
Python批量更改文件名的实现方法
Oct 29 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
详解python中@的用法
Mar 27 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
详谈tensorflow gfile文件的用法
Feb 05 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
Python爬虫与反爬虫大战
Jul 30 Python
Python析构函数__del__定义原理解析
Nov 20 Python
python munch库的使用解析
May 25 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
DSP接收机前端设想
2021/03/02 无线电
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
js计算精度问题小结
2013/04/22 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python中for用来遍历range函数的方法
2018/06/08 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
资料员的岗位职责
2013/11/20 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
英语教研活动总结
2014/07/02 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
教师个人成长总结
2015/02/11 职场文书
检察院起诉意见书
2015/05/20 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS