mysql相关数据类型介绍
1.整数类型
数据类型 | 字节数 | 无符号数的取值范围 | 有符号数的取值范围 |
---|---|---|---|
tinyint | 1 | 0~2^8-1 | -2^7 ~2^7-1 |
smallint | 2 | 0~2^16-1 | -2^15 ~2^15-1 |
mediumint | 3 | 0~2^24-1 | -2^23 ~2^23-1 |
int | 4 | 0~2^32-1 | -2^31 ~2^31-1 |
bigint | 8 | 0~2^64-1 | -2^63 ~2^63-1 |
2.浮点数类型和定点数类型
数据类型 | 字节数 | 有符号的取值范围 | 无符号的取值范围 |
---|---|---|---|
float | 4 | ||
double | 8 | -1.79E+308~2.2E-308 | 0和2.2E-308~1.79E308 |
decimal(M,D) | M+2 | -1.79E+308~2.2E-308 | 0和2.2E-308~1.79E308 |
从表中可以看出,decimal类型的取值范围与double类型相同。需要注意的是,decimal类型的有效取值范围是由M和D决定的,其中,M表示的是数据的长度,D表示的是小数点后的长度。如:将数据类型为decimal(6,2)的数据3.1415插入数据库后,显示的是3.14。
3. 日期与时间类型
数据类型 | 字节数 | 取值范围 | 日期格式 | 零值 |
---|---|---|---|---|
year | 1 | 1901~2155 | YYYY | 0000 |
date | 4 | 1000-01-01~9999-12-3 | YYYY-MM-DD | 0000-00-00 |
time | 3 | -838:59:59~838:59:59 | HH:MM:SS | 00:00:00 |
datetime | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS |
0000-00-00 00:00:00 |
timestamp | 4 | 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS |
0000-00-00 00:00:00 |
需要注意的是,如果插入的数值不合法,系统会自动将对应的零值插入数据库中。
4.字符串和二进制类型
数据类型 | 类型说明 |
---|---|
char | 用于表示固定长度的字符串 |
varchar | 用于表示可变长度的字符串 |
binary | 用于表示固定长度的二进制数据 |
varbinary | 用于表示可变长度的二进制数据 |
blob | 用于表示二进制大数据 |
text | 用于表示大文本数据 |
enum | 表示枚举类型,只能存储一个枚举字符串值 |
set | 表示字符串对象,可以有零或多个值 |
bit | 表示位字段类型 |
char与varchar对比:char(4)类型时,不管插入值的长度是多少,所占用的空间都是4个字节。varchar(4)所占用的字节数为实际长度加1。如‘’的长度为1,'abcd'的长度为5
binary与varbinary对比:他俩与char、varchar相似。binary(M)或varbinary(M),M指的是二进制数据的最大字节长度。binary类型的长度是固定的,如果数据长度不足,会在数据的后面用”\0“补齐,最终达到指定长度。
Text类型
数据类型 | 存储范围 |
---|---|
tinytext | 0~255字节 |
text | 0~65535字节 |
mediumtext | 0~16777215字节 |
longtext | 0~4294967295字节 |
text类型用于表示大文本数据,例如,文章内容,评论等。
Blob类型
数据类型 | 存储范围 |
---|---|
tinyblob | 0~255字节 |
blob | 0~65535字节 |
mediumblob | 0~16777215字节 |
longblob | 0~4294967295字节 |
blob类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,如图片,pdf文档等。blob类型和text类型很相似,但blob 类型根据二进制编码进行比较和排序,而text类型数据根据文本模式进行比较和排序。
Enum类型
定义Enum类型为:Enum('值1','值2',...,'值n')。enum类型的数据只能从枚举列表中取,并且只能取一个。枚举列表中的值都有一个顺序标号,mysql中存储的是这个顺序标号而不是列表中的值。
Set类型 Set类型用于表示字符串对象,它的值可以有零个或多个,Set类型数据的定义格式与Enum类型类似。 定义格式为:Set('值1','值2',...,'值n')。同样mysql存储的是列表的顺序编号。
Bit类型 Bit类型用于表示二进制数据。定义Bit类型数据格式如下:Bit(M)。 其中M用于表示每个值的位数。当位数不足时,会在左边补零。如:为BIT(6)分配值b'101'的效果与分配b'000101'相同。