详解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 psutil模块简单使用实例
Apr 28 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
Python3 实现串口两进程同时读写
Jun 12 Python
python输出决策树图形的例子
Aug 09 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
在Python 的线程中运行协程的方法
Feb 24 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 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 socke 向指定页面提交数据
2008/07/23 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP可变函数学习小结
2015/11/29 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
jquery随机展示头像代码
2011/12/21 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python入门_浅谈数据结构的4种基本类型
2017/05/16 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
应届生求职推荐信
2013/10/28 职场文书
有针对性的求职自荐信
2013/11/14 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
高三毕业感言
2015/07/30 职场文书
中秋晚会致辞
2015/07/31 职场文书
2015年国培研修感言
2015/08/01 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技