为了存储字符串、图片和声音等数据,MysqL提供了字符串和二进制类型。
数据类型
CHAR——用于表示固定长度的字符串
VARCHAR——用于表示可变长度的字符串
BINARY——用于表示固定长度的二进制数据
VARBINARY——用于表示可变长度的二进制数据
BOLB——用于表示二进制大数据
TEXT——用于表示大文本数据
ENUM——表示枚举类型,只能存储一个枚举字符串值
SET——表示字符串对象,可以有零或多个值
BIT——表示位字段类型
CHAR和VARCHAR类型
都用来存储字符串
VARCHAR,可以存储可变长度的字符串
CHAR,存储定长字符串
定义如下
CHAR (M)或者VARCHAR (M)
M指的是字符串的最大长度
比如
插入值’ab’
CHAR (4),需要4个字节
VARCHAR (4),需要3个字节
当数据为CHAR (M)类型时,不管插入值的长度是多少,所占用的存储空间都是M个字节。
当为VARCHAR (M)类型时,所占用的字节数为实际长度加1。
BINARY和VARBINARY类型
类似于CHAR和VARCHAR
用来表示二进制数据
定义如下
BINARY (M)或者VARBINARY (M)
M指的是二进制数据的最大字节长度
注意
BINARY类型的长度是固定的,如果数据的长度不足最大长度,在后面用”\0”补齐。
比如,数据类型为BINARY (3),当插入a时,实际存储的是”a\0\0”
TEXT类型
用于表示大文本数据
类型分为4中,如下
TINYTEXT
取值范围:0~255字节
TEXT
取值范围:0~65535字节
MEDIUMTEXT
取值范围:0~16777215字节
LONGTEXT
取值范围:0~4294967295字节
BLOB类型
一种特殊的二进制类型
用于表示数据量很大的二进制数据
比如,图片、PDF文档等
分为4种,如下
TINYBLOB
取值范围:0~255字节
BLOB
取值范围:0~65535字节
MEDIUMBLOB
取值范围:0~16777215字节
LONGBLOB
取值范围:0~4294967295字节
BLOB和TEXT区别
BLOB类型数据,根据二进制编码进行比较和排序
TEXT类型数据,根据文本模式进行比较和排序
ENUM类型
枚举类型
定义如下
ENUM (‘值1’,’值2’,’值3’,……,’值N’)
上述的(‘值1’,’值N’)称为枚举列表
ENUM类型的数据,只能从枚举列表中取,而且,只能取一个
枚举列表中的值都有一个顺序编号,存入的是这个顺序编号,而不是列表的值
SET类型
用于表示字符串对象
它的值可以有0个,或多个。
SET类型的定义和ENUM类型类似
SET (‘值1’,’值N’)
与ENUM类型相同
(‘值1’,’值N’)列表中的每个值,都有一个顺序编号,MysqL中存储的是这个编号,而不是列表中的值
BIT类型
用于表示二进制
定义如下
BIT (M)
M表示每个值的位数,范围为1~64
注意
如果分配的BIT (M)的数据长度小于M,在数据的左边用0补齐
比如
BIT (6)类型的插入值为’101’,实际存储为’000101’