DataType
MySQL 常见的数据类型
学习笔记,仅供参考
思维导图:
虽然设计数据类型是 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 表示真假。