二进制字符串类型
MYSQL的二进制数据类型有BIT,BINARY,MEDIUMBLOB和LONGBLOB。本节将讲解各类二进制字符串类型的特点和使用方法。表一列出了MYSQL中的二进制数据类型。
表一
类型名称 | 说明 | 存储需求 |
---|---|---|
BIT(M) | 位字段类型 | 大约(M+7)/8字节 |
BINARY(M) | 固定长度二进制字符串 | M字节 |
VARBINRAY(M) | 可变长度二进制字符串 | M+1字节 |
TINYBLOB(M) | 非常小的BLOB | L+1字节,在此L<28 |
BLOB(M) | 小BLOB | L+2字节,在此L<216 |
MEDIUMBLOL(M) | 中等大小BLOB | L+3字节,在此L<224 |
LONGBLOB(M) | 非常大的BLOB | L+4字节,在此L<232 |
BIT
BIT类型是位字段类型。表一中M表示每个值的位数,范围为1-64。如果没有给值,默认为1。如果为BIT(M)列分配的值的长度小于M位,就在值的左边用0填充。例如,为BIT(6)列分配一个为’101’,其效果与分配b’000101’相同。BIT数据类型用来保存位子段值。例如,以二进制的形式保存数据13(13的二进制形式位1101),在这里需要位数至少为4为的BIT类型,即可以定义列类型为BIT(4),大于二进制1111的数据是不能插入BIT(4)类型中的字段的。
这里建一个测试表做个简单测试
create table tmp2(b BIT(4));
INSERT INTO tmp2 values(2),(9),(15);
select * from tmp2;
select BIN(b) from tmp2;
BIN()函数将二进制的结果转换为对应的数字的值,BIN()函数将数字转换为二进制。
BINARY和VARBINARY类型
BINARY和VARBINARY类型于CHAR和VARCHAR(MYSQL数据库表字段类型(二)),不同的是它们包含二进制字符串。其使用的语法格式如下:
列名称 BINARY(M)或者VARBINARY(M)
BINARY类型的长度是固定的,指定长度之后,不足最大长度的,将在它们右边填充’\0’补充以达到指定长度。例如:指定列数据类型为BINARY(3),当插入‘a’时,存储的内容实际为’a\0\0’,当插入’ab’时,实际存储的内容为’ab\0’,不管存储的内容是否达到指定的长度,其存储空间均为指定的值M。
VARBINARY类型的长度是可变的,指定好长度之后,其长度可以在0到最大指之间。例如:指定列数据类型为VARBINARY(20),如果插入的值的长度只有10,则实际存储空间为10加1,即实际占用的空间为字符串的实际长度加1。
BLOB类型
BLOB是一个二进制大对象,用来存储可变数量的数据。BLOB类型分为4种:TINYBLOB,BLOB,MEDIUMBLOB和LONGBLOB,它们可容纳值的最大值长度不同,如表一所示。TEXT列存储的是非二进制字符串(字符字符串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值;TEXT列有一个字符集,并且根据字符集对值进行排序和比较。