详解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中正则表达式的用法实例汇总
Aug 18 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python 实现选择排序的算法步骤
Apr 22 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
js获取form的方法
2015/05/06 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
在Linux下调试Python代码的各种方法
2015/04/17 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
团结演讲稿范文
2014/05/23 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
大学辅导员述职报告
2015/01/10 职场文书
法律意见书范文
2015/05/20 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL