详解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遍历文件夹并删除特定格式文件的示例
Mar 05 Python
Python中使用语句导入模块或包的机制研究
Mar 30 Python
Python中尝试多线程编程的一个简明例子
Apr 07 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
python中的&amp;&amp;及||的实现示例
Aug 07 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
python字符串的多行输出的实例详解
Jun 08 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 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
php 代码优化的42条建议 推荐
2009/09/25 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
showModalDialog在谷歌浏览器下会返回Null的解决方法
2013/11/27 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
js变量提升深入理解
2016/09/16 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
临床护士自荐信
2014/01/31 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
应聘教师自荐书
2014/06/16 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
初中学生操行评语
2014/12/26 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
中学图书馆工作总结
2015/08/11 职场文书