详解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 15 Python
wxPython中listbox用法实例详解
Jun 01 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
numpy.linspace函数具体使用详解
May 27 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
django数据模型中null和blank的区别说明
Sep 02 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 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
mysql 字段类型说明
2007/04/27 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
jquery与prototype框架的详细对比
2013/11/21 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
Python将字典转换为XML的方法
2020/08/01 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
护士自荐信
2013/10/25 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
药店主任岗位责任制
2014/02/10 职场文书
统计专业自荐书
2014/07/06 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
幽灵公主观后感
2015/06/09 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
python百行代码实现汉服圈图片爬取
2021/11/23 Python
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript