详解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 with statement 进行文件操作指南
Aug 22 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
python文件操作相关知识点总结整理
Feb 22 Python
Django实现分页功能
Jul 02 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
Python实现TCP通信的示例代码
Sep 09 Python
python实现录屏功能(亲测好用)
Mar 02 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
python元组打包和解包过程详解
Aug 02 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
javaScript动态添加Li元素的实例
2018/02/24 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
JavaScript实现世界各地时间显示
2020/09/07 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
numpy中的高维数组转置实例
2018/04/17 Python
python list转矩阵的实例讲解
2018/08/04 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
int和Integer有什么区别
2013/05/25 面试题
百度吧主申请感言
2014/01/12 职场文书
另类冲刺标语
2014/06/24 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
爱心募捐感谢信
2015/01/22 职场文书
学校国庆节活动总结
2015/03/23 职场文书
夫妻吵架保证书
2015/05/08 职场文书
钱学森观后感
2015/06/04 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL