全国咨询热线:400-618-9090

首页技术文章正文

MySQL字符串和二进制数据类型介绍

创建时间:2019-11-21 16:15:29.0 来源:黑马程序员

为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。下面列举了MYSQL中的字符串和二进制类型。

1574323906793_MySQL数据库-二进制类型.jpg

上面列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型一一介绍。

CHAR和VARCHAR类型

CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:

CHAR(M) 或者 VARCHAR(M)

上面的的定义方式中,M指的是字符串的最大长度。为了帮助读者更好地理解CHAR和VARCHAR之间的区别,下面以CHAR(4)和VARCHAR(4)为例进行说明,具体如下。

1574323929528_CHAR和VARCHAR.jpg

从上面图中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节。而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1。

BINARY和 VARBINARY类型

BINARY和 VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。定义 INARY和 VARBINARY类型的方式如下所

BINARY(M) EX VARBINARY (M)

在上述格式中,M指的是二进制数据的最大字节长度。

需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“\0”补齐,最终达到指定长度。例如,指定数据类型为BINARY(3),当插入a时,实际存储的数据为“a0\0”,当插入ab时,实际存储的数据为“ab\0”。


TEXT类型

TEXT类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为4种,具体如下所示。

BL0B类型

BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。BLOB类型分为四种,具体如下所示。

需要注意的是,BL0B类型与TX类型很相似,但BL0B类型数据是根据二进制编码进行比较和排序,而仼XT类型数据是根据文本模式进行比较和排序。

ENM类型

ENUM类型又称为枚举类型,定义ENM类型的数据格式如下所示:

ENUM(‘值1', ’值2’, ’值33’ ,…, ’值n’)

在上述格式中,(‘值1', ’值2’, ’值33’ ,…, ’值n’)称为枚举列表,ENM类型的数据只能从枚举列表中取,并且只能取一个。需要注意的是,枚举列表中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。


SET类型

SET类型用于表示字符串对象,它的值可以零个或多个,SET类型数据的定义格式与ENUM类型类似,具体语法格式如下所示:

SET(‘值1’,’值2’,’值3’,...,’值n’)

与ENUM类型相同,(‘值1’,’值2’,’值3’,...,’值n’)列表中的每个值都有一个顺序编号,MySQL中存入的也是这个顺序编号,而不是列表中的值。

BIT类型

BIT类型用于表示二进制数据。定义BIT类型的基本语法格式如下所示:


BIT(M)

在上述格式中,M用于表示每个值的位数,范围为1~64。需要注意的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。例如,为BIT(6)分配值b‘101’的效果与分配b“000101’相同。

猜你喜欢:
MySQL安装教程

在线咨询 我要报名