Mysql常用数据类型归纳总结1
一直在用Mysql数据库,Mysql的数据类型也最常打交道的。但关于Mysql的一些常用数据类型了解程度仅限于一知半解,仅仅能满足满足于平时一些最简单的操作。而Mysql常用数据类型的定义以及规范理解的并不是特别的透彻,自己对于这些东西的理解有许多也是出于想当然,经不起推敲和较真。故有此文,帮助自己总结归纳,并加深理解。
整数型:TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
小数型:FLOAT, DOUBLE, DECIMAL, REAL
字符型:CHAR, VARCHAR
日期时间型: DATE, DATETIME, TIME, TIMESTAMP, YEAR
备注型:TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
当然,划分的标准不同也会有不同的结果。以上只列举了Mysql中一些常见并且经常用到的数据类型。下面将逐一对以上各种类型进行总结学习。
整数型
通过上图看以看出TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT数据类型各自所占的存储空间和支持的取值范围。当然,支持的取值范围是根据各自的存储空间大小不同而不同的。
先思考一个问题,同样为整数型数据类型,为什么还要区分出TINYINT, SMALLINT等等呢?一般来讲,我们根据存储内容的特点来选取不同的数据类型,既使数据类型的取值范围能够涵盖所有情况的存储内容,又不至于过大的存储空间浪费。即最佳最优的存储效果。举例来讲,我们存储一个人的年龄,要选择哪种整型数据类型比较合适呢?根据各整型特点,无符号的TINYINT类型最为恰当。0到255的取值范围足够囊括一个人年龄的可能取值,并且不会造成过多存储空间浪费。如果选择SMALLINT乃至BIGINT,当然可以满足存储需求,但对于人的年龄而言它们的取值范围实在是太大了,一种大材小用的即视感。由此可见,TINYINT, SMALLINT等不同存储空间各整型数据类型存在的意义。
知道这个道理之后,我们在创建数据库中表的时候,就要多思考思考,到底哪种数据类型与我们存储数据是最合适的。不要想当然的去给分配一种数据类型,可能你的程序跑起来没有任何问题。但很多情况是,你的存储内容可能真的不需要那么大的取值范围,你在默默的浪费着你的存储空间。这是不对的,浪费就是犯罪啊。作为一个高逼格的软件开发者,我们不应该让这种事情发生。=_=。重视起来,给你的存储内容选最合适的数据类型。
下面来说另一个事。MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。在INT(M) 中, M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关.如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性.
关于这一点,自己之前理解一直比较模糊,觉得M的值影响到数据存储的大小。 其实如上所说,它们之间是没有关系的。并且只有在该列的属性选择为UNSIGNED ZEROFILL,并且存储内容的位数达不到显示宽度的值时,才会用0填充存储内容的值,以达到指定的宽度。但这不会影响到该列的存储范围大小,INT类型无符号的范围始终是0~4294967295。举例说明,对于声明为INT(4) ZEROFILL的列,值4检索为0004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。
如下:

插入3条不同长度的数据。可以看出,当插入数据长度达不到设定宽度(4)时,Mysql会用0将数据位数补全为设定宽度(4)。

插入数据的最大值为4294967695,即无符号int类型的最大值。当插入数据不在无符号INT类型取值范围(0~4294967295)之内时,Mysql报错。但却执行了插入操作,存储的是0或4294967295。


关于Mysql的整数型,就总结这些。以后再补充。下一节小数型。
参考资料:http://www.cnblogs.com/huligong1234/archive/2012/06/11/2545682.html
http://www.cnblogs.com/doit8791/archive/2012/05/11/2495319.html
Mysql常用数据类型归纳总结1的更多相关文章
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
- Mysql常用数据类型
Mysql常用数据类型 数字: 字符串: 时间:
- Mysql常用数据类型详细说明及实例说明(学习笔记一)
1.Mysql 在windows下 Net start mysql[启动] Net stop mysql[停止] Quit[退出mysql命令行] \c[取消输入的命令] Select version ...
- Mysql 常用数据类型 占用字节数 [转]
数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长度固定的字符 ...
- MySQL常用数据类型 length 专题
MySQL-data_type数据类型 1.查看数据类型 mysql> help data type //通过help对数据进行查看,以及使用的方法 2.MySQL常见的数据类型 整数in ...
- MySql常用数据类型分析
整数类型 TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT 分别使用8,16,24,32,64位存储空间,值得范围-2的(N-1)方到2的(N-1)方-1.根据需要存储的范围 ...
- MySQL常用数据类型小结
在 MySQL 中,有三种主要的类型:字符串.数字和日期/时间类型. 目录 [隐藏] 1 字符串类型 2 数值类型 3 日期和时间类型 4 使用建议 5 艺搜参考 字符串类型 CHAR 0-255字 ...
- mysql常用查询归纳
一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) .where常用运算符: 比较运算符 > ...
- MySQL常用数据类型及细节
目录 1 整数类型 1.1 可选属性 1.1.1 M 1.1.2 UNSIGNED 1.1.3 ZEROFILL 2 浮点类型 2.1 精度误差 3 定点数类型 3.1 数据精度说明 3.2 类型介绍 ...
随机推荐
- Java 学习笔记之 实例变量与线程安全
实例变量与线程安全: 不共享数据: public class NoSharedThread extends Thread { private int count = 5; public NoShare ...
- mfc CString 转 char *
做界面时遇到需要从界面编辑框接受输入字符(用户名,密码之类),然后转为char *类型交给程序处理,记录一下找到的方法,主要参考https://blog.csdn.net/neverup_/artic ...
- k8s pod访问不通外网问题排查
环境概况 自建k8s集群,主机操作系统ubuntu16.04,k8s版本v1.14, 集群网络方案calico-3.3.6. worker节点数50+,均为GPU物理服务器,服务器类型异构,如Nvid ...
- python程序设计基础(嵩天)第五章课后习题部分答案
第五章p1515.2:实现isodd()函数,参数为整数,如果参数为奇数,返回true,否则返回false.def isodd(s): x=eval(s) if(x%2==0): return Fal ...
- SpringBoot系列:Spring Boot使用模板引擎JSP
一.Java模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 在jav ...
- python编程基础之九
原码, 反码, 补码原码,即用二进制表示正数: 原码 == 反码 == 补码负数: 反码: 原码除符号位之外全部取反 补码: 反码 + 1 位运算:运算符 作用 & 按位与 | 按位或 ^ 按 ...
- 基于Matlab/Simulink的模型开发(连载一)
概述 基于模型的开发将省去繁琐的代码编写步骤,只需要拖动几个模块,就像搭积木一般,轻松搭建您自己的飞控算法.飞控开发人员可以将更多的精力放在算法本身,而不需要过多关注代码实现的细节,这样将大大加快开发 ...
- Elasticsearch Java API 很全的整理
Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...
- STM32串口IAP分享
什么是IAP? IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通 ...
- Python_深拷贝和浅拷贝
深拷贝与浅拷贝 import copy v = 123 v1 = copy.copy(v) #浅拷贝 v2 = copy.deepcopy(v) #深拷贝 **拷贝只拷贝可变数据类型,浅拷贝只拷贝第一 ...