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 类型介绍 ...
随机推荐
- Zookeeper监控(Zabbix)
一直在弄监控,这些个中间件Zookeeper.Kafka......,平时也只知道一点皮毛,也就搭建部署过,没有真正的用过,一般都是大数据的同学在用,作为运维人员我需要对他做一个监控,由于对他不是 ...
- IDEA 学习笔记之 Spark/SBT项目开发
Spark/SBT项目开发: 下载Scala SDK 下载SBT 配置IDEA SBT:(如果不配置,就会重新下载SBT, 非常慢,因为以前我已经下过了,所以要配置为过去使用的SBT) 新建立SBT项 ...
- Java 从入门到进阶之路(七)
在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载. 在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择.如下 A:在收 ...
- LitePal的聚合函数
传统的聚合函数用法 虽说是聚合函数,但它的用法其实和传统的查询还是差不多的,即仍然使用的是select语句.但是在select语句当中我们通常不会再去指定列名,而是将需要统计的列名传入到聚合函数当 ...
- restTemplate getForObject中map传参问题
在使用restTemplate中getForObject的map传参形式时: 开始时我是这么调用的: RestTemplate rest = new RestTemplate(); Map<St ...
- javascript生成规定范围的随机整数
Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布. 我 ...
- 2. SOFAJRaft源码分析—JRaft的定时任务调度器是怎么做的?
看完这个实现之后,感觉还是要多看源码,多研究.其实JRaft的定时任务调度器是基于Netty的时间轮来做的,如果没有看过Netty的源码,很可能并不知道时间轮算法,也就很难想到要去使用这么优秀的定时调 ...
- gedit 外部工具——快捷运行
可快捷编译运行一些代码,适合新手使用. 配置如下. 快捷键:F5 保存:当前文档 输入:无 输出:无 使用范围:所有文档,所有语言 脚本如下. #!/bin/sh #author: srczhang# ...
- .Net Core 3.0 IdentityServer4 快速入门
.Net Core 3.0 IdentityServer4 快速入门 一.简介 IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架. 将 ...
- opencv实践::对象计数
问题描述 真实案例,农业领域经常需要计算对象个数 或者在其它领域拍照自动计数,可以提供效率,减低成本 解决思路 通过二值分割+形态学处理+距离变换+连通区域计算 #include <opencv ...