一直在用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的更多相关文章

  1. MySQL数据库3 - MySQL常用数据类型

    一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的       ---> 数 ...

  2. Mysql常用数据类型

    Mysql常用数据类型 数字: 字符串: 时间:

  3. Mysql常用数据类型详细说明及实例说明(学习笔记一)

    1.Mysql 在windows下 Net start mysql[启动] Net stop mysql[停止] Quit[退出mysql命令行] \c[取消输入的命令] Select version ...

  4. Mysql 常用数据类型 占用字节数 [转]

    数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长度固定的字符 ...

  5. MySQL常用数据类型 length 专题

    MySQL-data_type数据类型 1.查看数据类型 mysql> help data type    //通过help对数据进行查看,以及使用的方法 2.MySQL常见的数据类型 整数in ...

  6. MySql常用数据类型分析

    整数类型 TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT 分别使用8,16,24,32,64位存储空间,值得范围-2的(N-1)方到2的(N-1)方-1.根据需要存储的范围 ...

  7. MySQL常用数据类型小结

    在 MySQL 中,有三种主要的类型:字符串.数字和日期/时间类型. 目录 [隐藏]  1 字符串类型 2 数值类型 3 日期和时间类型 4 使用建议 5 艺搜参考 字符串类型 CHAR 0-255字 ...

  8. mysql常用查询归纳

    一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) .where常用运算符: 比较运算符 > ...

  9. MySQL常用数据类型及细节

    目录 1 整数类型 1.1 可选属性 1.1.1 M 1.1.2 UNSIGNED 1.1.3 ZEROFILL 2 浮点类型 2.1 精度误差 3 定点数类型 3.1 数据精度说明 3.2 类型介绍 ...

随机推荐

  1. HDU 2044——一只小蜜蜂...(DP)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044 题解 //递归思想,超时 #include<iostream> using namesp ...

  2. Linux——服务器版本安装 (VMware)

    一.Linux简介 Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网 ...

  3. CentOS7下mongodb忘记密码后重置密码

    新装mongodb后,结果一段时间没有用,密码给忘记了,只能重置密码了. 步骤如下: 1.找到mongodb的配置文件 通过ps -ef|grep mongod找到mongodb的配置文件mongod ...

  4. Jmeter定时器:Precise Throughput Timer使用

    百度上这方面资料很少,google上有一些,我试着总结一下. Precise Throughput Timer 是Jmeter4.0添加的新功能,直接摘录一段英文: The Precise Throu ...

  5. Pycharm 快捷键大全 2019.2.3

    在Pycharm中打开Help->Keymap Reference可查看默认快捷键帮助文档,文档为PDF格式,位于安装路径的help文件夹中,包含MAC操作系统适用的帮助文档. 下图为2019. ...

  6. 02-18 scikit-learn库之k近邻算法

    目录 scikit-learn库之k近邻算法 一.KNeighborsClassifier 1.1 使用场景 1.2 代码 1.3 参数详解 1.4 方法 1.4.1 kneighbors([X, n ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. Mysql多数据库备份

    备份数据脚本 #!/bin/bash # date是linux的一个命令 date [参数] [+格式] time=` date +%Y_%m_%d_%H_%M_%S ` # 备份输出路径 backu ...

  9. Hydra爆破神器使用

    参数详解: -R 根据上一次进度继续破解-S 使用SSL协议连接-s 指定端口-l 指定用户名-L 指定用户名字典(文件)-p 指定密码破解-P 指定密码字典(文件)-e 空密码探测和指定用户密码探测 ...

  10. dll劫持破坏360

    0x01 前言 说起DLL劫持技术,相信大家都不会陌生,因为这种技术的应用比较广泛,比如木马后门的启动.破解程序的内存补丁.外挂插件的注入以及加密狗的模拟等.之所以DLL劫持技术深受黑客们的喜爱,主要 ...