欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql相关数据类型介绍

程序员文章站 2022-07-05 22:28:15
1.整数类型 数据类型 字节数 无符号数的取值范围 有符号数的取值范围 tinyint 1...

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'相同。