My Blog

DataType

MySQL 常见的数据类型

学习笔记,仅供参考

参考B站Mirco_Frank - MySQL 删库跑路 | 菜鸟教程


思维导图

mind_map


虽然设计数据类型是 DBA 的事,但还是要了解一些常见的数据类型。

🎋整数类型

整数类型可以用来表示一些自然的整数数字,数据库对数据的要求会十分的准确和严格,根据需求去选择。

Type Size Range
tinyint 1 Byte (-2^7 ~ 2^7-1)
smallint 2 Bytes (-2^15 ~ 2^15-1)
mediumint 3 Bytes (-2^23 ~ 2^23-1)
int 4 Bytes (-2^31 ~ 2^31-1)
bigint 8 Bytes (-2^63 ~ 2^63-1)

🎍 小数型 (浮点数和定点数)

对于小数型有浮点数和定点数两种,因为浮点数会发生精度丢失的问题还有四舍五入,所以一般不被使用。要想精确的存储小数就要用到定点数,一般用它来存储金钱等高要求的数据。

精度丢失的原理:因为计算机是以二进制来存储计算的,而要想用二进制来表示一个小数,就可能要好多的位数。但计算机的位数总是有限的,所以最后就会发生精度丢失。

举个例子:

对于十进制,零点一就是 0.1 。

而对于二进制 0.1(0.5), 0.01(0.25), 0.001(0.125), 0.0001(0.0625), 0.00001(0.03125), 0.000001(0.015625)依次下去。所以零点一可能就要好多二进制小数位来表示。

Type Size Range
float 4 Bytes -
double 8 Bytes -
decimal decimal(M,D) -

🎎 字符型 (字符串和文本)

用来存储简短的字符串或者论文文章等长文本。

字符串类型

而枚举和集合是可以存储多个字符串的

枚举类型(enum)

在如今的世道,男和女不一定就代表所以的性别了,还有变性人、人妖等,所以可用枚举来表示性别。

enum 关键字来表示枚举,使用如下:

color enum('red', 'orange', 'yellow', 'green', 'blue')   // 将枚举中的元素填写在括号中

对于枚举字段,在插入数据时,数据只能是枚举中有的元素,插入其他的会报错。

insert into <filed_name> values ('red'), (1);   // 插入时写元素名或者元素的号码,即从左到右排第几个

还可以通过查看表信息来看到枚举中有哪些元素。

集合类型(set)

在一些娱乐软件中,注册时会经常遇到选择感兴趣的标签,这种能选择多个字符串就是用集合类型实现的。

hobby set('sing', 'game', 'writing', 'dance', 'running', 'reading')   // 列举出集合中的元素

与枚举不同的是,集合类型在插入数据时能选择多个元素。

insert into <field_name> values ('sing,dance,game');   // 注意:在一个单引号填写多个元素,而且逗号后不能有空格,不然会把逗号也当作元素的名字


🎏 时间日期类型

在建表时,都要必须要有创建日期和更新日期的字段,而这些字段就要用到时间日期类型

插入时的数据要用引号包起来

🎐 布尔类型(boolean)

数据库中也有布尔类型,可以表示一些二元对立的事物

使用就是用 boolean 关键字表示即可,但通过查看表的结构信息可知,其实它就是 tinyint(1) , 当插入时可以写 true 、 false 或者 用 1 、0 。显示时只用 1,0 表示真假。