MySQL-多种数据类型详述

MySQL 提供很多种数据类型来对不同的常量、变量进行区分,MySQL 中的数据类型主要是 数值类型、日期和时间类型、字符串类型 选择合适的数据类型进行数据的存储非常重要,在实际开发过程中,选择合适的数据类型也能够提高 SQL 性能,所以有必要认识一下这些数据类型 。
数值类型MySQL 支持所有标准的 SQL 数据类型,这些数据类型包括严格数据类型的严格数值类型,这些数据类型有

  • INTEGER
  • SMALLINT
  • DECIMAL
  • NUMERIC 。
近似数值数据类型 并不用严格按照指定的数据类型进行存储,这些有
  • FLOAT
  • REAL
  • DOUBLE PRECISION
还有经过扩展之后的数据类型,它们是
  • TINYINT
  • MEDIUMINT
  • BIGINT
  • BIT
其中 INT 是 INTEGER 的缩写,DEC 是 DECIMAL 的缩写 。
下面是所有数据类型的汇总
MySQL-多种数据类型详述

文章插图
 
整数在整数类型中,按照取值范围和存储方式的不同,分为
  • TINYINT ,占用 1 字节
  • SMALLINT,占用 2 字节
  • MEDIUMINT,占用 3 字节
  • INT、INTEGER,占用 4 字节
  • BIGINT,占用 8 字节
五个数据类型,如果超出类型范围的操作,会发生错误提示,所以选择合适的数据类型非常重要 。
还记得我们上面的建表语句么
我们一般会在 SQL 语句的数据类型后面加上指定长度来表示数据类型许可的范围,例如
int(7)表示 int 类型的数据最大长度为 7,如果填充不满的话会自动填满,如果不指定 int 数据类型的长度的话,默认是 int(11) 。
我们创建一张表来演示一下
create table test1(aId int, bId int(5));/* 然后我们查看一下表结构 */desc test1;
MySQL-多种数据类型详述

文章插图
 
整数类型一般配合 zerofill 来使用,顾名思义,就是用 0 进行填充,也就是数字位数不够的空间使用 0 进行填充 。
分别修改 test1 表中的两个字段
alter table test1 modify aId int zerofill;alter table test1 modify bId int(5) zerofill;
MySQL-多种数据类型详述

文章插图
 
然后插入两条数据,执行查询操作
MySQL-多种数据类型详述

文章插图
 
如上图所示,使用zerofill 可以在数字前面使用 0 来进行填充,那么如果宽度超过指定长度后会如何显示?我们来试验一下,向 aId 和 bId 分别插入超过字符限制的数字
MySQL-多种数据类型详述

文章插图
 
会发现 aId 已经超出了指定范围,那么我们对 aId 插入一个在其允许范围之内的数据
MySQL-多种数据类型详述

文章插图
 
会发现,aId 已经插进去了,bId 也插进去了,为什么 bId 显示的是 int(5) 却能够插入 7 位长度的数值呢?
所有的整数都有一个可选属性 UNSIGNED(无符号),如果需要在字段里面保存非负数或者是需要较大上限值时,可以使用此选项,它的取值范围是正常值的下限取 0 ,上限取原值的 2 倍 。如果一个列为 zerofill ,会自动为该列添加 UNSIGNED 属性 。
除此之外,整数还有一个类型就是 AUTO_INCREMENT,在需要产生唯一标识符或者顺序值时,可利用此属性,这个属性只用于整数字符 。一个表中最多只有一个 AUTO_INCREMENT 属性,一般用于自增主键,而且 NOT NULL,并且是 PRIMARY KEY 和 UNIQUE 的,主键必须保证唯一性而且不为空 。
小数小数说的是啥?它其实有两种类型;一种是浮点数类型,一种是定点数类型;
MySQL-多种数据类型详述

文章插图
 
浮点数有两种
  • 单精度浮点型 - float 型
  • 双精度浮点型 - double 型
定点数只有一种 decimal 。定点数在 MySQL 内部中以字符串的形式存在,比浮点数更为准确,适合用来表示精度特别高的数据 。
浮点数和定点数都可以使用 (M,D) 的方式来表示,M 表示的就是 整数位 + 小数位 的数字,D 表示位于 . 后面的小数 。M 也被称为精度 ,D 被称为标度 。
下面通过示例来演示一下
首先建立一个 test2 表
CREATE TABLE test2 (aId float(6,2) default NULL, bId double(6,2) default NULL,cId decimal(6,2) default NULL)然后向表中插入几条数据


推荐阅读