详解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实现的ini文件操作类分享
Nov 20 Python
python实现查询IP地址所在地
Mar 29 Python
python安装与使用redis的方法
Apr 19 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
python笔记:mysql、redis操作方法
Jun 28 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
Python爬虫解析网页的4种方式实例及原理解析
Dec 30 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
深入了解Python enumerate和zip
Jul 16 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
介绍几个array库的新函数 php
2006/12/29 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
javascript实现留言板功能
2020/02/08 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
艺术设计专业个人求职信
2014/04/10 职场文书
学校节能减排方案
2014/06/13 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
单位政审意见范文
2015/06/04 职场文书
创业计划书之农家乐
2019/10/09 职场文书