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 类型介绍 ...
随机推荐
- python beautiful soup
官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 使用前需要先安装模块,并安装解析器 pip install beautif ...
- ArcGISEngine中GP工具奇怪错误问题error(s) have been detected for layer
运行时环境:使用CADToGeodatabase工具执行DWG文件转gdb过程,多次执行(即执行完一个dwg转gdb,再执行另一个dwg转gdb),执行失败 错误描述:首先执行CADToGeodata ...
- 【流畅的python】16.1 - 生成器如何进化成协程
在生成器中加入yield关键字后,生成器调用方可以向生成器传入值,只需要使用.send(...)方法就可以传送数据.发送的数据会成为生成器函数中yield表达式的值.所以生成器可以作为协程使用. 协程 ...
- pinpoint1.8.5安装及使用指南
简介 pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控.它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的. 各大APM ...
- 人生,还没困难到"非死不可"
最近半个月,美国著名的Facebook公司,出了好几件大事.第一件事,2019年9月19日,一名陈姓中国软件工程师在Facebook加州总部跳楼自杀.第二件事,2019年10月4日,一名软件工程师在座 ...
- Java9以后的垃圾回收
1: finalize() 方法 finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行, 由于fi ...
- docker镜像命令使用
创建docker容器时使用的docker镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认的docker镜像仓库是Docker Hub公共镜像源 使用docker sear ...
- Linux学习资料网站汇总链接(持续更新ing)
排名不分先后. 学海无涯苦作舟. 博客: 1.slmba:LINUX博客原创大牛 2.edsionte's TechBlog:Linuxer (他的友情链接中还有一堆Linuxer,被公司屏蔽进不去. ...
- deferred对象和promise对象(一)
个人认为阮一峰老师讲的关于deferred对象是最容易理解的. deferred对象是jquery的回调函数解决方案.解决了如何处理耗时操作的问题,对那些操作提供了更好的控制,以及统一的编程接口. d ...
- 全面系统Python3入门+进阶课程 ✌✌
全面系统Python3入门+进阶课程 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 无论是大数据.人工智能还是机器学习,Python都是最热门的首选语言 ,这 ...