详解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下载FTP上的文件夹的实现代码
Feb 10 Python
Python本地与全局命名空间用法实例
Jun 16 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
python测试mysql写入性能完整实例
Jan 18 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
python实现批量文件重命名
Oct 31 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
使用K.function()调试keras操作
Jun 17 Python
PyTorch 导数应用的使用教程
Aug 31 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python中Qslider控件实操详解
Feb 20 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
综合图片计数器
2006/10/09 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
开会迟到检讨书
2014/01/08 职场文书
高二化学教学反思
2014/01/30 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
业务员的岗位职责
2014/03/15 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
学生检讨书如何写
2014/10/30 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript