为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。下面列举了MYSQL中的字符串和二进制类型。
上面列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型一一介绍。
CHAR和VARCHAR类型
CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:
CHAR(M) 或者 VARCHAR(M)
上面的的定义方式中,M指的是字符串的最大长度。为了帮助读者更好地理解CHAR和VARCHAR之间的区别,下面以CHAR(4)和VARCHAR(4)为例进行说明,具体如下。
从上面图中可以看出,当数据为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安装教程