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

文章插图
整数在整数类型中,按照取值范围和存储方式的不同,分为
- 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;

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

文章插图
然后插入两条数据,执行查询操作

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

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

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

文章插图
浮点数有两种
- 单精度浮点型 - float 型
- 双精度浮点型 - double 型
浮点数和定点数都可以使用 (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)
然后向表中插入几条数据
推荐阅读
- 数据库 最全光刻资料整理
- ISP如何用大数据来帮助客户
- 在R、Python和Julia中常用的数据可视化技术
- Excel数据透视表10大常用技巧
- Oracle自治数据库新动态
- 如何用 Python 清洗数据?
- MySQL 数据库性能优化,看这篇就够了
- 数据库分类
- 百度竞价“基木鱼”中如何查看落地页数据
- 淘宝店铺数据抓取 如何正确获取淘宝商家注册信息